如何在main方法中访问匿名内部类?

时间:2018-05-20 04:28:28

标签: java inner-classes anonymous-inner-class

如何在main方法中访问匿名内部类对象。它给编译时错误说"不能静态引用非静态方法"。如果我将匿名内部类设为静态,那么我可以访问我想访问的ut而不会使其静态。

如何做到这一点。请帮忙。

AnonymousInnerClass2.java

abstract class AnonymousInnerClass21
{
    abstract void m();  
}

public class AnonymousInnerClass2
{
    AnonymousInnerClass21 a=new AnonymousInnerClass21()
    {
        @Override
        void m() {
            System.out.println("Hello");
        }
    };

    public static void main(String[] args)
    {
        a.m();
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为要访问内部类(无论是普通类/命名类还是匿名类),必须创建定义了内部类的类的对象,您可以在下面尝试

abstract class AnonymousInnerClass21
{
    abstract void m();  
}

public class AnonymousInnerClass2
{
    AnonymousInnerClass21 a=new AnonymousInnerClass21()
    {
        @Override
        void m() {
            System.out.println("Hello");
        }
    };

    public static void main(String[] args)
    {
        AnonymousInnerClass2 anonymousInnerClass2=  new AnonymousInnerClass2 ();//create outer class object
        anonymousInnerClass2.a.m(); // access inner class object through outer class object

    }
}