繁体   English   中英

从另一个类访问Java类中的私有字段

[英]Accessing private field in Java class from another class

大家好,所有人都可以解释为什么这段代码的最后一行是合法的:

public class HashCodeTest {
    private String value = null;

    HashCodeTest(String value) {
    this.value = value;
    }

    public static void main(String[] args) {

    Map<HashCodeTest, String> aMap = new HashMap<HashCodeTest, String>();
    aMap.put(new HashCodeTest("test"), "test");
    aMap.put(new HashCodeTest("test"), "test");
    System.out.println(aMap.size());
    }

    @Override
    public int hashCode() {
    int result = 17;
    return 31 * result + value.hashCode();
    }

    public boolean equals(HashCodeTest test) {
    if (this == test) {
        return true;
    }
    if (!(test instanceof HashCodeTest)) {
        return false;
    }
    return test.value.equals(value);
    }
} 

在最后一行可以访问测试类的私有字段,但这是非法的。

谢谢,马克西姆

此类的所有实例都可以访问私有字段。

因为它是您正在使用它的同一个类的实例。

value不是另一个的私有变量; 它是同一个类的另一个实例的私有变量。 因此,访问是完全合法的。

访问修饰符定义类型的访问权限,而不是类型实例的访问权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM