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是什么?
谁能解释一下吗?
立即学习“Java免费学习笔记(深入)”;
主要结果是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中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号