Mudanças no acesso de variáveis ​​para classes genéricas no Java 7

Aqui está um exemplo simples de algum código que compila usando o Java 6, mas não compila no 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;
    }
  }
}

No Java 7, ele falha em compilar noget(TestContainer<T> container) método, com o erro:

erro: _myVar tem acesso privado no teste

Eu não entendo porque isso não compila mais - na minha cabeça deveria. A variávelt é do tipoT, que deve estenderTest. Está tentando acessar o campo_myVar de uma instância deTest de dentro da classeTest.

De fato, se eu mudar o métodoget(TestContainer<T> container) para o seguinte, compila (sem avisos):

public int get(TestContainer<T> container){
  Test t = container.get();
  return t._myVar;
}
Por que isso não compila mais?Isso foi um bug no Java 6? Se sim porque?Isso é um bug no Java 7?

Eu tive um google e procurei no banco de dados de bugs do Oracle, mas não encontrei nada sobre isso ...

questionAnswers(3)

yourAnswerToTheQuestion