2
爲什麼我不能在包含的本地類中引用通用父類的類型參數?如何在本地類中使用通用父類型的類型參數?
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的上面的代碼是完全正常的,但1.6.0_11的javac似乎覺得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;
}
}
不過,我想了解有什麼不好的第一變體。有任何想法嗎?
我知道它在C#中是一樣的,但是在C#中,您也可以使用'class A',並保存在第二個泛型參數中。 –
2009-08-20 09:14:11
由於C#甚至沒有本地類,它絕對不是在C#中。 – 2009-08-20 09:21:41
...類中的類與Java中的類基本不同。 – 2009-08-20 09:22:18