博客
关于我
泛型Generic
阅读量:660 次
发布时间:2019-03-15

本文共 1740 字,大约阅读时间需要 5 分钟。

波客体 - 泛哪jenisim

泛型编程是一种编程范式,允许程序在运行时确定具体的数据类型,而不是在编译时就固定为某一类型。这种灵活性使它在处理不同类型数据时更加高效和安全。

不使用泛型的弊端

虽然不使用泛型的程序在实现上比较简单,但也有其弊端。例如,使用Object类来存储不同类型的数据:

ArrayList list = new ArrayList();list.add("Hello");    // 添加字符串list.add(100);       // 添加数字list.add(true);       // 添加布尔

当你尝试访问这些数据时,需要手动向下转型:

Object object = list.get(i);if (object instanceof String) {    String s = (String) object;    System.out.println(s);} else if (object instanceof Integer) {    System.out.println(((Integer) object).intValue());} else if (object instanceof Boolean) {    System.out.println(((Boolean) object).booleanValue());}

这种方法需要额外的转换,容易出错,调试困难。

什么时候使用泛型

在需要处理可变类型或需要保持代码的灵活性时,使用泛型是更好的选择。例如,以下场景中使用泛型可以避免问题:

例如,创建一个能够存储不同类型数据的容器:

public class MyList
{ private T t; public void set(T t) { this.t = t; } public T get() { return t; }}

一个具体的示例

假设我们有一个泛型容器:

MyList
myList = new MyList<>();myList.set("张三"); // 传递字符串String s = myList.get(); // 返回String类型// s就可以直接使用String的方法而无需转换

因此,调用时更加灵活高效,避免了类型转换的麻烦和潜在的异常风险。

泛哪泛型接口

泛型还可以应用于接口。假设定义了一个泛型接口:

public interface MyInterface
{ void method(T t);}

实例可以是:

  • 非泛型实现:
public class MyInterfaceImpl implements MyInterface
{ @Override public void method(String s) { System.out.println(s); }}
  • 泛哪实现:
public class MyInterfaceImpl2
implements MyInterface
{ @Override public void method(T t) { System.out.println(t); }}

应用场景:

MyInterfaceImpl obj = new MyInterfaceImpl();obj.method("Hello");MyInterfaceImpl2
numImpl = new MyInterfaceImpl2<>();numImpl.method(42);numImpl.method("数字");

结论

通过上述例子可以看见,使用泛型可以显著提升代码的灵活性和可维护性。在调用时无需手动转换类型,提高了效率和代码的可读性,同时降低了潜在的异常风险。作为一名开发者,了解和使用泛型能够让你在处理不同类型数据时更加高效和从容。

转载地址:http://mljmz.baihongyu.com/

你可能感兴趣的文章
OSPF技术连载2:OSPF工作原理、建立邻接关系、路由计算
查看>>
OSPF技术连载5:OSPF 基本配置,含思科、华为、Junifer三厂商配置
查看>>
OSPF技术连载6:OSPF 多区域,近7000字,非常详细!
查看>>
OSPF技术连载7:什么是OSPF带宽?OSPF带宽参考值多少?
查看>>
OSPF技术连载8:OSPF认证:明文认证、MD5认证和SHA-HMAC验证
查看>>
OSPF故障排除技巧
查看>>
spring配置文件中<context:property-placeholder />的使用
查看>>
OSPF有哪些优势?解决了RIP的什么问题?
查看>>
OSPF的七种类型LSA
查看>>
OSPF的安全性考虑:全面解析与最佳实践
查看>>
ospf综合实验2 2012/9/8
查看>>
OSPRay 开源项目教程
查看>>
OSS 访问图片资源报“No ‘Access-Control-Allow-Origin‘”的错误
查看>>
oss报UnknownHost,k8s设置hostAliases参数
查看>>
OS模块
查看>>
OS第2章 —— 进程
查看>>
OS第3章 —— 进程调度和死锁
查看>>
OS第5章
查看>>
OTA测试
查看>>
Outlook 2010 Inside Out
查看>>