私はLearning JavaのInnerクラスについて読んでいました。私は、javap 'Animal$Brain'
は内部クラスが内部クラスのコンストラクタに、その封入インスタンスへの参照を取得する方法について説明Javaの内部クラス
Compiled from "Animal.java"class
Animal$Brain {
final Animal this$0;
Animal$Brain(Animal);
}
として出力を与え、コンパイルした後、このコード
class Animal{
class Brain{
}
}
を発見しました。しかし、私はこの
class Animal{
private class Brain{
}
}
のようなプライベートとして内部クラスを定義するときにコンパイルした後、javap 'Animal$Brain'
は
Compiled from "Animal.java"
class Animal$Brain {
final Animal this$0;
}
として出力を与える、なぜ出力が違うのですか? 内部クラスのコンストラクタが表示されないのはなぜですか? 後者の場合も、内部クラスはクラスインスタンスを囲む参照を取得しています。
私は、クラスのパブリックコンストラクタがなくなっていると思います(新しいAnimal()、新しいBrain();は現在外部で行うことはできません)。 – Rogue