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

你可能感兴趣的文章
Node.js 历史
查看>>
Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
查看>>
Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
查看>>
Node.js 异步模式浅析
查看>>
node.js 怎么新建一个站点端口
查看>>
Node.js 文件系统的各种用法和常见场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>
Node.js 线程你理解的可能是错的
查看>>
Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js中环境变量process.env详解
查看>>
Node.js之async_hooks
查看>>
Node.js升级工具n
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>