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

Java Generics: Foo<T>, Foo, Foobar<T extends Foo<T>> and Foobar<T extends Foo>

在 Java 泛型中,给定一个泛型 class/interface Foo<T>, 声明一个新的泛型 class 有什么区别: Foobar<T extends Foo<T>> 或简单地 Foobar<T extends Foo>,为什么我可以实例化泛型 class Foo<T> 而无需实例化类型参数 T?,即为什么我可以编写以下内容: Foo var = new Foo();,这是否意味着class是用一个对象实例化的,通过它我只能使用非泛型方法? 如果问题不是很清楚,请原谅我,我正在处理的示例如下: 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)进行比较,而

class YourClass<T extends Comparable> {}

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