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());
}
}
上面的示例代码无法编译。它说“两个无法解决”。 这段代码有什么问题?
答案 0 :(得分:1)
你正在创造
new Two()
所以classpath中必须有一个有效的类。
制作
class Two{
}
class One {
Two two() {
return new Two() {
// Two(){}
// Two(String s) {
// System.out.println("s= "+s);
// }//you can't override constuctors
};
}
}
或在新的左侧必须有超类或界面才能使其正常工作
答案 1 :(得分:0)
您没有声明Two
课程。您声明了类One
和私有成员two
,其中two
是您尝试通过匿名构造初始化的Two
类的对象。
答案 2 :(得分:0)
new Two() {
Two(){}
Two(String s) {
System.out.println("s= "+s);
}
};
匿名内部类称为匿名,因为它没有自己的名称,必须通过它扩展/实现的基类或接口的名称来引用。
在您的示例中,您创建了一个Two
的匿名子类,因此必须将Two
声明为某个类或接口。如果已经声明了第二类,则要么在类路径中没有它,要么忘记导入它。