0

これが私のクラスです:

public class T {
    public  int num = 100;
    private int num2 = -1;

    //inner class
    public static class Inner {
        private int num2 = 250;

        public void method() {
            System.out.println(num2);//calls inner class num
            System.out.println(...);//should print class T num
            System.out.println(...);//should print class T num2
        }   
    }
}

クラスTのnumnum2を出力する 2 番目と 3 番目のprintlnを作成するにはどうすればよいですか?

4

2 に答える 2

7

できません-Innerクラスは内部クラスではなく、静的なネストされたクラスです。言い換えれば、T のインスタンスへの参照なしに、それ自体が存在します。

static宣言の一部を削除すると、次のInnerことが可能になります。

public class Inner {
    private int num2 = 250;

    public void method() {
        System.out.println(num2);//calls inner class num
        System.out.println(num);//should print class T num
        System.out.println(T.this.num2);//should print class T num2
    }   
}
于 2012-11-30T11:34:58.687 に答える
4

ネストされたクラスを宣言するstaticと、ケースでネストされたクラスのインスタンスを作成するために外部クラスのインスタンスを必要としInnerないため、クラスのプロパティにアクセスできませんOuter

ただし、削除すると、クラスのインスタンスにクラスが存在することがstatic 保証されるため、クラスのメンバーにアクセスできます。InnerOuterOuter

于 2012-11-30T11:39:51.567 に答える