如何在main方法中访问匿名内部类对象。它给编译时错误说"不能静态引用非静态方法"。如果我将匿名内部类设为静态,那么我可以访问我想访问的ut而不会使其静态。
如何做到这一点。请帮忙。
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();
}
}
答案 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
}
}