2017-03-02 43 views
0

没有在这里Java泛型 - 意外的界限

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

问题。

未收到的界限。这是什么意思?为什么它错了?感谢帮助。

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

} 
+0

你能解释一下你什么时候得到这个错误吗?这是编译错误吗?或者它是在实例化这个类或什么时候出现的? –

+0

编译错误 – hasNoPatience

回答

5

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

extends ArrayList<E>,而不是你只需要“使用”类型参数:与“<E>”你指的是你的类中声明的参数,它绑定在其声明中已经给出。 “<? extends Number>”(?代替E)也会被编译器接受(尽管它不是你想要的)。相反,“<E extends Number>”被视为一个类型参数声明,所以它是一个编译错误。

0
public class MyList<E extends Number> extends ArrayList<E> { 
    private static final long serialVersionUID = -1025575227555594680L; 

} 

这应该工作,没有编译错误,甚至没有警告。让我知道你是否仍然有同样的错误。