可能是重复问题:
在升级到Java 7后,泛型类的类型参数化字段变得不可见
public class Test{
private String _canYouSeeMe = "yes";
<T extends Test> void genericMethod(T hey){
String s = hey._canYouSeeMe;
}
void method(Test hey){
String s = hey._canYouSeeMe;
}
}
在使用JDK 1.6编译时,这段代码可以正常编译,但是在使用1.7编译时,在genericMethod()方法中会出现编译错误:Test._canYouSeeMe字段不可见。
可以通过将_canYouSeeMe属性从private改为protected来解决此错误,但我想知道从1.6到1.7发生了什么变化。
T
是Test
的子类,那么它也是一个Test
,我们应该能够访问Test._canYouSeeMe
。实际上,在Java 7中将hey
转换为Test
可以使其工作。 - Joachim Sauer