0

の内部クラスのB一部ではないクラスのインスタンスを作成したいと考えています。A

どうすればこれを達成できますか?クラス名は両方のクラスで同じままにしたいと思いBます。

public class Sample {
    public static void main(String[] args) {
        A a = new A();
        a.show();
    }
}

class A {
    class B {
        public void show() {
            System.out.println("hello");
        }
    }

    public void show() {
        B b = new B();
        b.show();
    }
}

class B {
    public void show() {
        System.out.println("hellohello");
    }
}
4

5 に答える 5

4

クラス B の完全修飾名を使用します。つまりcom.mypackage.mysubpackage.B、アウターBBcom.mypackage.mysubpackage.A.Bインナー Bに使用します。

于 2013-02-11T13:27:21.707 に答える
3

の完全修飾名を使用して、B常に参照できますpackageName.B

クラスが名前のない (デフォルトの) パッケージにある場合 (つまり、そのファイルの先頭に宣言がない場合)、これは機能しませんこれは、名前のないパッケージをまったく使用しないもう 1 つの理由です (つまり、すべてのクラスを名前付きのパッケージに含める必要があります)。package.java

于 2013-02-11T13:27:28.983 に答える
2

メイン メソッドを以下のコードに置き換えます。

public static void main(String[] args) {

    A a = new A();
    a.show();
    //For Outer Class
    B bOuter =new B();
    bOuter.show();

    //For Inner Class
    A.B bInner=new A().new B();
    bInner.show();
}
于 2013-02-11T13:32:32.753 に答える
2

インスタンスを作成するクラスの完全な識別子を使用します (importステートメントなし)。

yourPackage.B variable = new yourPackage.B();
于 2013-02-11T13:27:49.073 に答える
1

同じクラス名間の競合を避けるために、完全修飾名を使用してください。例えばpackageName.A.BpackageName.B

于 2013-02-11T14:08:16.413 に答える