在 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/