Java Generics :(扩展List <e>)vs(扩展List)

时间:2017-12-26 12:15:56

标签: java generics type-parameter bounded-types

假设我想声明一个名为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

someClassArrayList的子类,意味着它继承了ArrayList的所有可访问字段和方法。

我知道如果我将ArrayList替换为ArrayList<E>,如果我调用someClass<String> object它会将String传递给超级类ArrayList,那很好

但是我们坚持使用代码。现在,如果我调用someClass<String> object,它就不会将String传递给ArrayList。那么现在,对象是raw还是没有,它的字段和方法如何工作?

1 个答案:

答案 0 :(得分:0)

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