【发布时间】:2018-10-30 02:18:35
【问题描述】:
如何在 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();
}
}
【问题讨论】:
-
要么将
a声明为static,要么在main中创建AnonymousInnerClass2的实例。 -
或者,将
a的声明移到main内 -
new AnonymousInnerClass2().a.m();或更好地使用吸气剂new AnonymousInnerClass2().getA().m(); -
您的代码中没有名为 AnonymousInnerClass2 的类,只有 AnonymousInnerClass21*。然后,问题归结为如何从静态方法中访问非静态字段。或者反过来:无法访问匿名类。您创建了该类的**实例,仅此而已。
标签: java inner-classes anonymous-inner-class