Изменения в доступе к переменным для универсальных классов в Java 7JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Изменения в доступе к переменным для универсальных классов в Java 7

Сообщение Anonymous »

Вот простой пример кода, который компилируется с использованием Java 6, но не компилируется в Java 7.

Код: Выделить всё

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;
}
}
}
В Java 7 не удается скомпилировать метод get(TestContainerContainer) с ошибкой:


ошибка: _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?
У меня была Google и поискал в базе данных ошибок Oracle, но ничего не нашел по этому поводу...

Подробнее здесь: https://stackoverflow.com/questions/107 ... -in-java-7
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»