根据文档http://www.oracle.com/technetwork/java/javase/compatibility-417013.html,Java 7阻止访问私有类型变量的成员。给出的例子是:
class A {
private int val = 42;
}
class Test<X extends A> {
void test(X x) {
int i = x.val; //error in JDK 7
}
}
我想知道为什么这种行为有任何意义,因为使用以下&#34;解决方法&#34;,只需使用标准语言功能就可以实现对私有成员的访问:
class A {
private int val = 42;
}
class Test<X extends A> {
void test(X x) {
final A a = x;
int i = a.val; // works in Java 7
}
}
如果通过所有路径屏蔽访问,屏蔽对私有字段的访问将是有意义的,但只是使用简单的中间分配绕过屏蔽路径。这有任何意义吗?可能是什么原理?或者这是Java 7规范中的一个错误?