0

下面是匿名内部类的示例,我们用 A 创建匿名类

class A
{
    void one()
    {
        System.out.println("hello");
    }
}

class One
{
    public static void main(String args[])
    {
        new A()
        {
            void five()
            {
                one();
            }
        }.five();
    }
}

我的问题是我们可以将类One设为匿名(而不是其内部匿名类),即简单地包含公共静态 void 主要方法的类。

4

2 回答 2

3

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

关于嵌套类与内部类http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

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

于 2012-09-10T16:40:58.207 回答
0

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

于 2012-09-10T16:56:43.200 回答