Java 类型参数为';答案不正确
我的主类中有两个公共静态子类:Java 类型参数为';答案不正确,java,generics,Java,Generics,我的主类中有两个公共静态子类: public class Main { public static void main(String args[]) { ... } public static class Obj { public void foo() { } ... } public static class ObjList<Obj> { private ArrayList<Obj> o
public class Main {
public static void main(String args[]) {
...
}
public static class Obj {
public void foo() {
}
...
}
public static class ObjList<Obj> {
private ArrayList<Obj> objList;
public void bar() {
for(Obj obj: objList)
obj.foo(); // Error here, cannot resolve method foo()
}
公共类主{
公共静态void main(字符串参数[]){
...
}
公共静态类Obj{
公共图书馆{
}
...
}
公共静态类对象列表{
私有ArrayList对象列表;
公共空白栏(){
用于(对象对象:对象列表)
obj.foo();//此处出错,无法解析方法foo()
}
在这种情况下,我无法访问ObjList类中Obj的实例方法foo()。如果我将鼠标悬停在类型参数Obj上,它将显示“类型参数Obj扩展对象”
如果我这样更改对象列表:
public static class ObjList<T extends Obj> {
}
公共静态类对象列表{
}
然后错误消失了,当我将鼠标悬停在Obj上时,它正确地显示“publicstaticclassmain.Obj扩展对象”
我想知道为什么前面的声明不起作用。
ObjList
不需要泛型参数。在其当前形式中,
被解释为(变量)类型(如第二个示例中的t
)默认情况下,它们由对象
限定。删除它,代码将按预期工作。在不需要的地方使用泛型!!去掉隐藏名称的类型变量Obj
:公共静态类ObjList{
谢谢大家,我意识到我犯了一个非常愚蠢的错误。