Java Generics - 意外的边界

has*_*nce 1 java generics arraylist bounds

这里没问题

public class MyList<E extends Number> extends ArrayList<E> {
}
Run Code Online (Sandbox Code Playgroud)

.

未接受的绑定.这是什么意思?为什么这是错的?感谢帮助.

public class MyList<E extends Number> extends ArrayList<E extends Number> {

}
Run Code Online (Sandbox Code Playgroud)

rro*_*y86 6

class MyList<E extends Number>是的,因为你声明了一个类型参数,所以你必须给它一个名字(E),你可以选择将它声明为有界(extends Number).

extends ArrayList<E>相反,你只需要"使用"类型参数:带" <E>"你指的是你的类中声明的参数,其绑定中已经在其声明中提到." <? extends Number>"(以?代替E)也将被编译器接受(尽管这是不是你想要的).相反," <E extends Number>"被视为类型参数声明,因此它是编译错误.