非静态内部类对象创建,不引用外部类引用

时间:2016-08-09 06:37:40

标签: java inner-classes

我是内部类的新手,这可能是一个非常愚蠢的问题,但我读到“没有外部类的实例就无法创建内部类的实例”但是当我试图创建一个非静态内部的对象时class使用它作为我的外部类的实例成员。

我知道它是通过引用我的外部类对象创建一个内部对象,但这是正确的方法吗?

以下是我的代码段:

public class TestInner {

    private Nonstatic non = null;
    private static  int access = 4;

    public class Nonstatic
    {
        void hello(){
            access = 90; 

        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub


        TestInner outer = new TestInner();
        TestInner.Nonstatic innern= outer.new Nonstatic();
        System.out.println("Non static obj1 is "+innern);

        outer.testinnerObj();

    }


    public void testinnerObj()
    {
        non = new Nonstatic(); 
        System.out.println("Non static obj2 is "+non);
        non.hello();

    }

}

1 个答案:

答案 0 :(得分:2)

您正在编写“如果没有外部类的实例,则无法创建Inner类的实例”。而这正是你在做的事情。

首先,创建“外部”类的实例:

TestInner outer = new TestInner();

然后,您创建一个“内部”类的实例 - 它只存在 在外部范围内: TestInner.Nonstatic innern= outer.new Nonstatic();

所以,问题可能归结为:是的,你是在静态main方法中创建对象。但这并不重要,因为您使用的语法outer.new在外部范围内创建它。

希望有所帮助。