javaのあんまり知らないほうがいい知識

以下のようなクラスがあるとする


class A {
private int x;
}
このクラスに対して以下のメソッドがコンパイルエラーにならずにしかも実行時にもエラーにならずに記述できる場所がある

void hoge(A a) {
a.x = 10;
}
普通に考えるとプライベートなメンバへのアクセスなので、コンパイルは通らない

しかし、javaのprivateは同じ"クラス"からしかアクセスできない

なので同じクラスであれば別なインスタンスでもアクセスできる

なので


class A {
private int x;

void hoge(A a) {
a.x = 10;
}
}

は問題なく実行できる

まぁ

this.x = 10;

は大丈夫で

A a = this;
a.x = 10;

がNGなのは明らかに不自然だしね

まぁこれが役に立つのって、equalsメソッドのオーバーライドのときとかみたいにかなり限定されるけどね