小工具 lombok

个人感觉这类似一个 javac 的插件,好处不必多说,省掉 java 程序员最讨厌的一堆 boilerplate,下面是个简单的例子

import lombok.Data ;

public class TestLombok {
    @Data
    public static class MyClass {
        private String foo ;
    }

    public static void main (String[] args) {
        MyClass a = new MyClass () ;
        a.setFoo ("bar") ;
        System.out.println (a) ;
    }
}

运行如下

$ javac -cp /path/to/lombok.jar TestLombok.java 
$ java TestLombok 
TestLombok.MyClass(foo=bar)

lombok 其他的 annotation 见其 doc,这下写 java 代码要容易很多了,一个 project 在 hibernate model 上用了 lombok 删掉了巨多的无用代码。比较有意思的是 scala 也有一些类似的 plugin,比如 2.9 里面的 autoproxy 就是通过 annotation 制定 delegate 在编译时为代理类生成这些代码。

不过 scala 这方面似乎走得更远,在 2.10 里面通过 reflection 本身可以在运行时拿到很多信息以外,甚至还允许在编译时通过 reflection 拿到信息,这就得到了所谓的 macro。似乎与 Java 通过 reflection 拿到方法、成员等信息不一样,scala 的 reflection 甚至能拿到 AST 并允许对其操纵,这在编译时来看就素那传说中的 metaprogramming 了。感觉上 scala 提供的 Dynamic 也是通过类似的东西来实现的,而不是学 java 的 proxy。

——————
And Bilhah Rachel’s maid conceived again, and bare Jacob a second son.

Advertisements
小工具 lombok

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s