Zmiany w dostępie do zmiennych dla klas ogólnych w Javie 7

Oto prosty przykład jakiegoś kodu, który kompiluje za pomocą Java 6, ale nie kompiluje się w Javie 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;
    }
  }
}

W Javie 7 nie można go skompilować wget(TestContainer<T> container) metoda z błędem:

error: _myVar ma prywatny dostęp w teście

Nie rozumiem, dlaczego to już się nie kompiluje - moim zdaniem powinno. Zmiennat jest typuT, która musi się rozciągaćTest. Próbuje uzyskać dostęp do pola_myVar instancjiTest z klasyTest.

Rzeczywiście, jeśli zmienię metodęget(TestContainer<T> container) poniżej kompiluje się (bez ostrzeżeń):

public int get(TestContainer<T> container){
  Test t = container.get();
  return t._myVar;
}
Dlaczego to się już nie kompiluje?Czy to był błąd w Javie 6? Jeśli tak, dlaczego?Czy jest to błąd w Javie 7?

Mam google i szukam w bazie danych błędów Oracle, ale nie znalazłem nic na ten temat ...

questionAnswers(3)

yourAnswerToTheQuestion