【问题标题】:Anonymous inner class in groovygroovy 中的匿名内部类
【发布时间】:2010-11-29 08:18:25
【问题描述】:

我正在研究 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"}
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

    WicketBuilder 模拟这些 用命名的闭包覆盖。 闭包本质上是可移植的 代码块。在引擎盖下, builder 创建动态类 覆盖并运行闭包 命名的方法被调用。

    [...]

    【讨论】:

    • 这似乎是正确的答案。唉,这些项目似乎最近没有看到很多活动。无论如何,这个问题肯定也会影响其他框架。有一个关于在未来版本的 groovy 中实现内部类的讨论。
    • 确实,Groovy 匿名内部类在 1.8 的路线图上docs.codehaus.org/display/GroovyJSR/Groovy+Roadmap
    • 匿名内部类在 Groovy 1.7 中到期
    • 确实,路线图中写的是 1.7(1.8 是错字)。
    【解决方案2】:

    Ermh.. 这看起来不是一个“好的”替代方案,但它似乎是“官方”的 Groovy 替代方案:

    Groovy Alternatives to Inner Classes

    【讨论】:

    • 我知道该链接,但没有成功按照说明进行操作。
    【解决方案3】:

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        Groovy 1.7 及更高版本支持匿名内部类。请参阅 groovy 1.7 release notes

        【讨论】:

        • 我正在使用 grails,而 groovy 1.6.4 仍然与 grials 的 1.2 M3 版本捆绑在一起。有没有办法让 grails 使用新版本的 groovy?
        猜你喜欢
        • 1970-01-01
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多