这在 Java 泛型中怎么可能呢?
php小编苹果为您解答:在Java泛型中,"这在 Java 泛型中怎么可能呢?"这样的问题其实是有可能的。因为Java泛型允许使用通配符来表示不确定的类型,比如使用 "?" 表示任意类型。当我们在定义泛型方法或泛型类时,可以使用通配符来限定参数类型或返回值类型,从而实现一些特定的功能。虽然在某些情况下,可能会因为类型擦除而导致一些限制,但通过合理的设计和使用,我们可以在Java泛型中实现许多看似不可能的操作。
问题内容
我刚刚注意到,当谈到 Java 泛型时,一些对我来说非常违反直觉的事情。我们来看看这个方法:
public static <T> void inspect(T a, T b) { // ... }
登录后复制
可以进行以下调用:
inspect(new Integer(3), new String("What? How?"))
登录后复制
我认为一旦类型T被推导出来,它就必须是一致的,就像两个字符串或两个整数一样。 这没有多大意义,因为如果我的方法中有以下行:
T tmp
登录后复制
T是什么?
谁能解释一下吗?
解决方法
主要结果是Integer
和String
都是从Serialized
实现的。
所以你的代码等于:
public static <T extends Serializable> void inspect(T a, T b) { System.out.println(a + "_" + b); }
登录后复制
如果更改为blow代码,则仅在Integer
或Number
子类中有效。
public static <T extends Number> void inspect(T a, T b) { System.out.println(a + "_" + b); }
登录后复制
这是一个更好的例子:
public class MyTest { @Test public void demo() { inspect(new FirstSon("a"), new SecondSon("b")); } public <T> void inspect(T a, T b) { System.out.println(a + "_" + b); } interface Parent { } static class FirstSon implements Parent { private String name; public FirstSon(String name) { this.name = name; } } static class SecondSon implements Parent { private String name; public SecondSon(String name) { this.name = name; } } }
登录后复制
以上是这在 Java 泛型中怎么可能呢?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
3 周前
By DDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前
By DDD
威尔R.E.P.O.有交叉游戏吗?
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
