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メソッドのオーバーライドのときとかみたいにかなり限定されるけどね