Java 泛型 : Foo<T>, Foo、Foobar<T extends Foo<T>> 和 Foobar<T extends Foo>

标签 java oop generics extends generic-type-argument

在 Java 泛型中,给定泛型类/接口(interface) Foo<T> , 声明新的泛型类有什么区别: Foobar<T extends Foo<T>>或者简单地Foobar<T extends Foo> ,还有为什么我可以实例化泛型类 Foo<T>不实例化类型参数 T ?,即为什么我可以写以下内容: Foo var = new Foo(); ,这是否意味着该类是用一个对象实例化的,通过该对象我只能使用非泛型方法? 如果问题不太清楚,请原谅我,我正在研究的示例如下: MyClass<T extends Comparable<T>>

最佳答案

class Foo<T> {}

是你的类(class)。

Foo yourVariable = new Foo();

等于Foo<Object> yourFoo = new Foo<Object>();

class Foobar<T> extends Foo {}

等于class Foobar<T> extends Foo<Object> {}

问题的答案

class YourClass<T extends Comparable<T>> {}

表示 YourClass 的类型 T能够将自身与T的对象(其类)进行比较,而

class YourClass<T extends Comparable> {}

的类型 T能够将自身与Object类的对象进行比较,这不是你想要的

关于Java 泛型 : Foo<T>, Foo、Foobar<T extends Foo<T>> 和 Foobar<T extends Foo>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59762025/

相关文章:

java - 从字符串转换为多项式

java - 我的应用程序如何访问 Tomcat server.xml 中配置的 keyStore.jks

php - 从过程代码转向oop

java - 为什么 ListDataModel 不能使用有界类型参数?

java - 如何在 Java 中实例化 Map.Entry<K, V> 数组?

java - Web应用程序中的多线程

java - 在没有Webview的情况下从自己的表单登录站点

java - 在这种情况下如何避免代码重复?

c# - 不同开发人员之间的 OOP 方法之间的混淆

c# - 内部类对象工厂