Java 如何在本地类内部使用泛型父类的类型参数?
为什么我不能在包含的本地类中引用泛型父类的类型参数Java 如何在本地类内部使用泛型父类的类型参数?,java,eclipse,generics,inner-classes,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, req
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
}
}
但是,我想了解第一个变体有什么问题。有什么想法吗?这可能是Sun的
javac
中的一个bug,看看答案中包含了哪些可能的解决方案。我知道在C#中也是一样的,但在C#中,你也可以使用类
,省去第二个通用参数。它肯定与C#中的不同,考虑到C#甚至没有本地类……而且类中的类与Java中的类有着根本的不同。谢谢你的提示!结果证明这是javac的一个已知错误:
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;
}
}