• 欢迎访问天天编码网站,Java技术、技术书单、开发工具,欢迎加入天天编码
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏天天编码吧
  • 我们的淘宝店铺已经开张了哦,传送门:https://shop145764801.taobao.com/

深入详解Java的泛型方法

Java高级 tiantian 1645次浏览 0个评论 扫描二维码

现代的很多编码语言都有泛型的概念,正如我们所知,泛型可以带来编译时的强类型安全。自然,Java语言在很早的版本中就引入了泛型的概念,不仅有泛型类的概念,还有泛型方法的概念。对于泛型类的引入和作用,建议参看本站的这篇文章。本文将深入浅出地讲解泛型方法的概念和功能。

深入详解Java的泛型方法

普通方法

假设你想要实现一个方法,该方法接受两个 Sets 作为参数,并求出它们的交集。直接看最简单直接的实现方式:

public static Set getIntersection(Set set1, Set set2){
Set result = new HashSet();

for(Object o: set1){
if(set2.contains(o))
result.add(o);
}

return result;
}

可以看到,这个实现方式是类型不安全的,编译器给出了相应的警告信息。这个示例代码存在几个潜在的问题。首先,在方法被调用并返回结果后,调用者可能并不知道返回结果的类型,对于返回结果中的每一个元素都需要进行转换操作。第二,两个具有不同元素类型的 Sets 不应该被成功地传递给该方法作为参数。第三,警告信息通常都应该被关注和修复。

泛型方法

针对上述普通方法的种种问题,我们通过改造其成为泛型方式的方式来解决:

public static Set getIntersection(Set set1, Set set2){
Set result = new HashSet();

for(E o: set1){
if(set2.contains(o))
result.add(o);
}

return result;
}

这样改造之后,方法就类型安全了,而且,警告信息也消失了。通过泛型,我们约束了两个输入参数和一个返回结果的类型都是 Set<E>,它们的元素类型必须保持一致。这样以后,方法的调用者就知道了返回结果的准确类型,可以不用强制类型转换而直接使用。现在,只有具有相同元素类型的两个 Sets 才能作为参数调用该方法,并获得相同元素类型的交集集合。

大家可以注意一下泛型方法的定义语法:类型参数,此处的 <E> ,应该位于方法的 修饰符 和 返回类型 之间。


天天编码 , 版权所有丨本文标题:深入详解Java的泛型方法
转载请保留页面地址:http://www.tiantianbianma.com/java-generic-method.html/
喜欢 (3)
支付宝[多谢打赏]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址