java - 如何在本地类中使用通用父类的类型参数?

标签 java eclipse generics inner-classes

为什么我不能在包含的本地类中引用泛型父类的类型参数?

public class IsGeneric<T> {
    public void doSomething(T arg) {
        class A {
            T x;
        }

        A foo = new A();
        foo.x = arg;
        T bar = foo.x;  // error: found java.lang.Object, required T
    }
}

根据 Eclipse,上面的代码完全没问题,但 javac 1.6.0_11 似乎认为 foo.x 是 java.lang.Object 类型。该问题的解决方法显然是使 A 本身成为泛型,例如以下代码:

public class IsGeneric<T> {
    public void doSomething(T arg) {
        class A<S> {
            S x;
        }

        A<T> foo = new A<T>();
        foo.x = arg;
        T bar = foo.x;
    }
}

但是,我想了解第一个变体有什么问题。有什么想法吗?

最佳答案

这可能是 Sun 的 javac 中的错误,参见 this question其中包括答案中可能的解决方案。

关于java - 如何在本地类中使用通用父类的类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304945/

相关文章:

java - 编译 Java Applet

Java 通用数组运行时初始化错误

Java:如何传递代表 Enum 类的值?

ios - 在 Swift 4 中使泛型定义可选

java - J2ME 项目中未检测到预处理器 block (Netbeans 6.9.1)

Android android.view.InflateException 二进制 XML 文件行 #16 : Error inflating class fragment

java eclipse mars libgdx 在我的桌面项目包上找不到 main 来运行游戏屏幕

java - 此应用程序无法在您的电脑上运行,要查找您的电脑版本,请与软件发行商联系

java - 使用 sed 更新 java 属性文件中的属性

java - 我如何从java中的类创建很多实例