以下是匿名内部类的示例,我们使用A
创建匿名类class A
{
void one()
{
System.out.println("hello");
}
}
class One
{
public static void main(String args[])
{
new A()
{
void five()
{
one();
}
}.five();
}
}
我的问题是我们可以将类One
设为匿名(不是它的内部匿名类),即只包含 public static void main 方法的类。
答案 0 :(得分:3)
static void main(String...)
必须是static
,内部类(匿名或其他)不能有静态方法。
在嵌套类和内部类http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
上嵌套类分为两类:静态和非静态。声明为static的嵌套类简称为静态嵌套类。非静态嵌套类称为内部类。
答案 1 :(得分:0)
您无法为匿名类创建静态方法。在第一个实例中,您将无法引用静态方法。唯一可行的方法是通过运行时的反射(几乎不是很好的编码实践)。在第二个实例中,所有匿名和内部类都是使用一些“父”实例创建的(在您的示例中,A的匿名实例将包含对One实例的引用)。这意味着内部和匿名类的设计并未考虑静态方法。如果他们确实需要静态方法,那么他们应该是父类的一部分。