我可以想象一下Java中一些非常有创意的代码:
Object thing = new Object() {
public void speak() {
System.out.println("Hi!");
}
};
thing.speak();
甚至,为了获得完整的闭包效果,定义一个Function
界面......你明白了吗?
为什么这段代码不起作用?
答案 0 :(得分:2)
我相信你可以这样做: -
new Object() {
public void speak() {
System.out.println("Hi!");
}
}.speak();
可以帮到你。
答案 1 :(得分:1)
不确定此示例中的有用性,但原始声明上的某些类型的重写方法很有用,并且由于它是重写,因此可以调用方法。否则在你的情况下,只需使用反射:
thing.getClass().getMethod("speak").invoke(thing);
以及覆盖方法:
Object thing = new Object() {
public void toString() {
System.out.println("Hi! Me inside your mind!");
return "not today!";
}
};
thing.toString();