Код: Выделить всё
public class Test {
private final int _myVar;
public Test(int myVar) {
_myVar = myVar;
}
public int get(TestContainer container){
T t = container.get();
return t._myVar;
}
private static class TestContainer {
private final T _test;
private TestContainer(T test) {
_test = test;
}
public T get(){
return _test;
}
}
}
ошибка: _myVar имеет частный доступ в тесте
У меня нет понять, почему это больше не компилируется - на мой взгляд, так и должно быть. Переменная t имеет тип T, который должен расширять Test. Он пытается получить доступ к полю _myVar экземпляра Test из класса Test.
Действительно, если я изменю метод get(TestContainerContainer) приводит к следующему результату, он компилируется (без предупреждений):
Код: Выделить всё
public int get(TestContainer container){
Test t = container.get();
return t._myVar;
}
- Почему это больше не компилируется?
- Была ли эта ошибка в Java 6? Если да, то почему?
- Это ошибка в Java 7?
Подробнее здесь: https://stackoverflow.com/questions/107 ... -in-java-7
Мобильная версия