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.

如果该类位于未命名(默认)包中(即,如果其文件顶部没有声明),这将不起作用。这是根本不使用未命名包的另一个原因(即您的所有类都应该在一个命名包中)。package.java

于 2013-02-11T13:27:28.983 回答
2

使用要创建实例的类的完整标识符(无import语句)。

yourPackage.B variable = new yourPackage.B();
于 2013-02-11T13:27:49.073 回答
2

用下面的代码替换你的 main 方法:

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 回答
1

使用完整的限定名避免相同类名之间的冲突。例如packageName.A.BpackageName.B

于 2013-02-11T14:08:16.413 回答