-- Start
我们都知道对象的私有变量只有它自己能访问, 其他任何对象都不能访问, 然而如果你看 String 类的源代码, 你会发现如下的代码.
private final char value[];
private final int offset;
private final int count;
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = count;
if (n == anotherString.count) { // 注意此处
char v1[] = value;
char v2[] = anotherString.value; // 注意此处
int i = offset;
int j = anotherString.offset; // 注意此处
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
原因是 anotherString 是 String 类对象,而 String 类的方法可以访问 String 类的任何一个对象的私有域.
--更多参见:Java 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-16
-- Written by ShangBo on 2012-05-16
-- End