博客
关于我
泛型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/

你可能感兴趣的文章
Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
查看>>
oracle数据插入表,oracle同时向多表插入数据
查看>>
oracle数据类型和对应的java类型
查看>>
【C++进阶篇】——string类的使用
查看>>
Oracle未开启审计情况下追踪表变更记录
查看>>
Oracle条件查询
查看>>
Oracle查看数据库会话连接
查看>>
Oracle查询前几条数据的方法
查看>>
oracle树形查询 start with connect by
查看>>
oracle毕业论文题目,历届毕业论文申报题目大全.doc
查看>>
oracle求助---win7下oracle配置相关疑问Starting Oracle Enterprise Manager 10g Database Control ...发生系统错误 5。
查看>>
Oracle流程控制语句
查看>>
oracle深度解析检查点
查看>>
Oracle游标
查看>>
oracle游标数最大数,Oracle 最大连接数 最大游标数
查看>>
oracle用户改名
查看>>
oracle用户解压不了,PLSQL developer 连接不上64位Oracle 的解决方法
查看>>
oracle用户解锁
查看>>
Oracle用游标删除重复数据
查看>>
Tomcat学习总结(19)—— 为什么首选Tomcat作为JavaWeb应用服务器?
查看>>