无法实例化匿名类

时间:2011-06-12 10:26:07

标签: java

我在这段简单的代码中遇到了2个错误:

public class Test {
    public static void main(String args[]) {
        O o = new O() {

        };
    }
}

错误:

    Test.java:3: cannot find symbol
    symbol  : class O
    location: class Test                                  
    O o = new O() {                               
    ^
    Test.java:3: cannot find symbol                       
    symbol  : class O                                     
    location: class Test                                  
    O o = new O() {                               
                      ^                                   

这里有什么问题?

3 个答案:

答案 0 :(得分:3)

对于匿名内部类,您应该扩展现有类(并使用Polymorphism来覆盖方法)或现有接口。

使用此规则,代码将失败,因为没有现有的类(类型)O。

尝试定义类并使用多态来覆盖父类中所需的方法。

答案 1 :(得分:2)

正如评论所说,你必须在某处定义。这段代码应该有效:

class O {}
public class Test {
    public static void main(String args[]) {
        O o = new O() {

        };
    }
}

答案 2 :(得分:1)

尝试:

public class Test {
    public static void main(String args[]) {
        Test  o = new Test () {

        };
        System.out.println(o.getClass().getName());
    }
}

你将获得Test $ 1