0
class One {
Two two() {
    return new Two() {
        Two(){}
        Two(String s) {
            System.out.println("s= "+s);
        }
    };
    }
}

class Ajay {
    public static void main(String ...strings ){
        One one=new One();
        System.out.println(one.two());
    }
}

上面的示例代码无法编译。它说“两个无法解决”。这段代码有什么问题??

4

3 回答 3

1

你正在创造

new Two()所以类路径中必须有一个有效的类。

做了

class Two{

}

class One {
Two two() {
    return new Two() {
//        Two(){}
//        Two(String s) {
//            System.out.println("s= "+s);
//        }//you can't override constuctors
    };
    }
}

或者在 new 的左侧必须有超类或接口才能使其工作

于 2011-03-01T10:30:30.467 回答
0

你没有声明这个Two类。您声明了 classOne和 private member ,您尝试通过匿名构造初始化的类的对象two在哪里。twoTwo

于 2011-03-01T10:35:16.300 回答
0
new Two() {
    Two(){}
    Two(String s) {
        System.out.println("s= "+s);
    }
};

匿名内部类之所以称为匿名,是因为它没有自己的名称,并且必须通过它扩展/实现的基类或接口的名称来引用。

在您的示例中,您创建了一个匿名子类,Two因此Two必须在某处声明为类或接口。如果已经声明了第二类,您要么在类路径中没有它,要么忘记导入它。

于 2011-03-01T11:05:29.783 回答