匿名内部类
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());
}
}
上面的示例代码不能编译。它说“两个不能解决”。 这段代码有什么问题?要创建匿名内部类
new Two()
new Two() {
Two(){}
Two(String s) {
System.out.println("s= "+s);
}
};
匿名内部类被称为匿名,因为它不具有其自己的名称,并且具有由所述基类或接口它延伸/工具的名称来引用。
在您的示例中,您将创建Two
的匿名子类,因此Two
必须在类或接口的某个位置进行声明。如果已经声明了类Two,那么您的类路径中没有它或忘记导入它。
Thanx.I忘记宣布类Two.infact我不知道应该宣布类2应该是因为书iam引用不提这个.. – 2011-03-01 11:45:03
所以必须在classpath中有效的类。
使其
class Two{
}
class One {
Two two() {
return new Two() {
// Two(){}
// Two(String s) {
// System.out.println("s= "+s);
// }//you can't override constuctors
};
}
}
或新的左侧有一定的超类或接口,使其工作
@jigar ...不,他正在使用下一代动态类生成,它会自动创建任何不在类路径中的类,并为其创建明智的方法;) – 2011-03-01 10:32:43
由于“Two”实际上是作为匿名内部类,将它声明为接口或抽象类而不是类可能更有意义。 – MAK 2011-03-01 10:38:10
@MAK *作为匿名内部类实现*仅用于显示的代码 – 2011-03-01 10:41:29
有没有问题的代码? – 2011-03-01 10:58:54