(Java) Lambda使っていい感じにMapとかClass生成できるやつ書いた
MapとかPOJO作るのに疲弊してきた
疲弊しすぎて、イライラして書いた。
https://github.com/be-hase/lamtils
Lambda使ってこんな感じで、さっくりと作れる。
例) HashMap :
Map<String, Object> map = Lamtils.newHashMap( one -> "one", two -> 2, three -> new Date(), four -> 4.0 );
よっしゃ!なんかLL言語っぽい感じになったぞ!
例) POJO(JavaBeans) : setter実装していないと駄目
public static class TestPojo { private String one; private int two; private Date three; private double four; private boolean five; // setter, getterは省略 } TestPojo pojo1 = Lamtils.newClass( TestPojo.class, one -> "one", two -> 2, three -> now, four -> 4.0, five -> true ); // もちろん指定したやつだけセットできる TestPojo pojo2 = Lamtils.newClass( TestPojo.class, one -> "one" );
よっしゃ!なんかGroovyとかScalaのあれっぽくなったぞ!
でもTestPojo.classって指定するのがダルい。 本気でやるならlombokみたいにしたい。
注意(重要)
- リフレクション使ってるので速くない。
- テストコードに使用するくらいなら、良いかも。
- javac optionsに"-parameters"って付けないと駄目。(面倒くさい)
- gradleなら、build.gradleに書いてあるようにcompile(Test)Java.options. compilerArgsあたりに"-parameters"いれれば良い
- ref : https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html
- ref : Executable (Java Platform SE 8)
結論
冷静に頭を冷やした結果、これからもGuavaのImmutableMap.of(...)とか、lombokの@Builderとか@Accessorsのfluentとか使って頑張る。
でも、こういう記法ができるってのはなんだか可能性を感じた。
なんか他にも応用できるといいなぁ。
Jenkins2.0のPipelineを触ってみたら便利だった
Jenkins2.0でてた
Jenkins2.0がでてた。
https://jenkins.io/2.0/
ざっくりと概要を見ると、主な変更点は次の3つらしい。
- Built-in support for delivery pipelines.
- Improved usability.
- Fully backwards compatible.
2に関しては、単純に見た目が良くなったよってこと。嬉しい。
3に関しては、後方互換性あるよってこと。幸せ。アップデートしない理由は理由ありませんということ。
1が気になる。
続きを読むブログ放置してた
2年位前に"書くことに集中するなら、自分でサーバーを持つよりも良さそうです。"とか言っておきながら放置してた。
放置しすぎててアレなので、 明日から本気だす。