Java 7 中泛型类的变量访问更改
2022-09-03 02:45:23
下面是一些使用 Java 6 编译但未在 Java 7 中编译的代码的简单示例。
public class Test<T extends Test> {
private final int _myVar;
public Test(int myVar) {
_myVar = myVar;
}
public int get(TestContainer<T> container){
T t = container.get();
return t._myVar;
}
private static class TestContainer<T extends Test> {
private final T _test;
private TestContainer(T test) {
_test = test;
}
public T get(){
return _test;
}
}
}
在Java 7中,它无法在方法中编译,并出现错误:get(TestContainer<T> container)
错误:_myVar在测试中具有私有访问权限
我不明白为什么这不再编译 - 在我看来它应该。变量的类型为 ,必须扩展 。它正在尝试从类中访问 的实例的字段。t
T
Test
_myVar
Test
Test
实际上,如果我将方法更改为以下内容,它将编译(没有警告):get(TestContainer<T> container)
public int get(TestContainer<T> container){
Test t = container.get();
return t._myVar;
}
- 为什么它不再编译?
- 这是 Java 6 中的一个错误吗?如果是,为什么?
- 这是Java 7中的一个错误吗?
我有一个谷歌并在Oracle错误数据库中搜索,但没有找到任何东西......