met*_*eta 13 java generics private-members generic-method 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;
}
}
Run Code Online (Sandbox Code Playgroud)
在针对JDK 1.6构建时,这种编译很好但是对于1.7,在genericMethod()中存在编译器错误:字段Test._canYouSeeMe不可见
可以通过使_canYouSeeMe受保护而不是私有来解决错误,但我只是想知道从1.6到1.7的变化
(T)class(Test)的子类永远不能访问超类的私有字段.这可能是Java 7中修复的Java 6编译器中的错误.
记住:T extends Test意味着它T是的子类Test.它并不意味着T的课Test.class,这对于具有私有字段和方法接入的必要条件.
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |