无法调用匿名类方法

时间:2014-02-26 18:07:24

标签: java class closures

我可以想象一下Java中一些非常有创意的代码:

Object thing = new Object() {
    public void speak() {
        System.out.println("Hi!");
    }
};
thing.speak();

甚至,为了获得完整的闭包效果,定义一个Function界面......你明白了吗?

为什么这段代码不起作用?

2 个答案:

答案 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();