【发布时间】:2013-09-23 09:39:42
【问题描述】:
只是为了举例,我将 String 作为成员变量。但原来结构复杂。
public class ClassA {
private final String test ;
public ClassA(String str) {
test = str;
}
@Override public int hashCode() {
return test.hashCode();
}
@Override public boolean equals(Object obj) {
return obj instanceof ClassA && test.equals(((ClassA)obj).test);
}
}
public class ClassB {
public static void main(String args[])
{
ClassA obj1 = new ClassA("abc");
ClassA obj2 = new ClassA("def");
obj1.equals(obj2);
obj2.test;//not valid
}
}
据我所知,对 obj1 的私有变量 test 的访问仅存在于 ClassA 的方法中,并且应该从 obj1 的上下文中调用这些方法。
当我调用 obj1.equals(obj2) 时,obj2 的测试变量可以从 obj1 的上下文中访问。
所以我们可以从 ClassA 方法中访问任何 ClassA 类型对象的私有变量吗?
【问题讨论】:
-
如果它们是你私有的(类),你可以访问它们。
-
Private Member Access Java 的可能重复项
-
“那么我们可以从 ClassA 方法中访问任何 ClassA 类型对象的私有变量吗?”是的。
标签: java