我们可以使包含main方法的类匿名

时间:2012-09-10 16:38:54

标签: java

以下是匿名内部类的示例,我们使用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 方法的类。

2 个答案:

答案 0 :(得分:3)

static void main(String...)必须是static,内部类(匿名或其他)不能有静态方法。

在嵌套类和内部类http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

  

嵌套类分为两类:静态和非静态。声明为static的嵌套类简称为静态嵌套类。非静态嵌套类称为内部类。

答案 1 :(得分:0)

您无法为匿名类创建静态方法。在第一个实例中,您将无法引用静态方法。唯一可行的方法是通过运行时的反射(几乎不是很好的编码实践)。在第二个实例中,所有匿名和内部类都是使用一些“父”实例创建的(在您的示例中,A的匿名实例将包含对One实例的引用)。这意味着内部和匿名类的设计并未考虑静态方法。如果他们确实需要静态方法,那么他们应该是父类的一部分。