groovy中的匿名内部类

时间:2009-09-18 00:19:53

标签: java groovy wicket inner-classes anonymous-class

我正在研究groovy-wicket集成,并且在编写事件处理程序时缺少匿名内部类似乎是一个问题。 是否有更古老的方式来编写此代码

import org.apache.wicket.PageParameters
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.link.Link
import org.apache.wicket.markup.html.WebPage


/**
 * Homepage
 */
class HomePage extends WebPage {


    public HomePage(final PageParameters parameters) {

        // Add the simplest type of label
        add(new Label("message", "Wicket running!"));   
        def link1 = new ClickHandler("link1") //in java, defined inline
        add(link1);
    }   
}

class ClickHandler extends Link{

    ClickHandler(String id) {
        super(id);
    }

    void onClick(){println "Hi"}
}

5 个答案:

答案 0 :(得分:1)

嗯..这看起来不像是一个“好”的选择,但它似乎是“官方”Groovy的选择:

Groovy Alternatives to Inner Classes

答案 1 :(得分:1)

我可能错了,但这不是WickeBuilder试图解决的问题:

  

Wicket Builder实用程序实现   用于构建的Groovy构建器   Wicket组件树。

     

使用构建器进行构建   组件树更容易,更清晰   给读者,原来的司机是   Groovy不允许的事实   匿名内部类。便门   依赖于重写方法   为许多人提供自定义功能   组件类型。可以使用Groovy   编写Wicket页面类,但每个   被覆盖的类需要命名   类定义。可能,但是   笨重。

     

WicketBuilder模拟这些   覆盖命名的闭包。   闭包基本上是便携式的   代码块。在引擎盖下,   构建器创建动态类   覆盖并运行闭包时   调用命名方法。

     

[...]

答案 2 :(得分:1)

答案 3 :(得分:0)

我实际上并不经常使用常规,但几个月前问我同样的问题。我尝试了不同的方法

http://rschmid.wordpress.com/2009/05/03/anonymouse-inner-classes-in-groovy/

答案 4 :(得分:0)

Groovy 1.7及以上版本支持匿名内部类。见groovy 1.7 release notes