这个问题在这里已有答案:
假设我想声明一个名为A
的接口,它扩展了类List
。如果我写为A<E> extends List
或A<E> extends List<E>
有什么区别?从这两个类实例化的对象之间有什么区别?
问题仍然是有界类型参数的方法或类。喜欢
public <T extends aClass<T>> void methodName(T t)
和
public <T extends aClass> void methodName(T t)
。
澄清:
我知道什么是原始类型。假设我们有这个:
Class someClass<E> extends ArrayList
someClass
是ArrayList
的子类,意味着它继承了ArrayList
的所有可访问的字段和方法。
我知道如果我用ArrayList
替换ArrayList<E>
,如果我调用someClass<String> object
它会将String
传递给超级类ArrayList
,那很好。
但是我们坚持使用代码。现在,如果我调用someClass<String> object
,它不会将String
传递给ArrayList
。那么现在,对象是否是raw
以及它的字段和方法如何工作?
A<E> extends List
永远不应该使用,因为List
是一种原始类型。
你应该使用:
interface A<E> extends List<E>
如果A
应该是一些通用元素类型的List
。
要么:
interface A extends List<String> // or any concrete type instead of String
如果A
应该是特定元素类型的List
。