セミコロンレスJava 8の新機能「enumにメソッド生やす」 #semicolonlessjava
これは セミコロンレスJava Advent Calendar 2015 の5日目です。
レガシーセミコロンレスJavaにおけるenumの制限
Java言語ではenumにメソッドを生やす事ができます。
//これはセミコロンを付けても良いありふれた普通のJavaコード
public enum Hoge {
FOO, BAR, BAZ;
public void println() {
System.out.println(name());
}
}
しかしメソッドを定義するためには一番最後に宣言した列挙定数(上記の例でいうと BAZ )の後ろにセミコロンをつける必要があります。
これは回避できない制約なのでセミコロンレスJavaではenumにメソッドは生やせませんでした。
セミコロンレスJava 8におけるenumの新機能
しかし、Java 8でインターフェースにデフォルトメソッドを持てるようになり、 その副次効果でセミコロンレスJava 8ではenumにメソッドを生やす事が出来るようになりました。
手順は簡単で、デフォルトメソッドを定義したインターフェースを用意してenumでそれをimplementsするだけです。
コード例を示します。
public enum Hoge implements Fuga {
FOO, BAR, BAZ
}
public interface Fuga {
default void println() {
if (System.out.printf("%s%n", ((Hoge) this).name()) != null) {}
}
}
enumの列挙定数や他のメソッドにアクセスしたい場合はキャストすればOKです。
まとめ
- enumにメソッドを生やせるようになり、ますますセミコロンレスJavaが便利に!
JJUG CCC 2015 Fallに行ってきた #jjug_ccc
JAX-RSネタで登壇してきた
GH-1のタイポっぽいけどGlassFishっぽくて良いな! pic.twitter.com/jfu08S7JMW
— うらがみ (@backpaper0) 2015, 11月 28
というわけで登壇させて頂きました。
ペース配分が甘くて最後のテストコードのパートをまるごと省略してしまい、聴講してくださった皆様には大変申し訳なく思っています。 おそらく関Javaで再演しますが、その際はしっかり最後まで話せるよう練習しておきます。
また、懇親会で「物足りなかった」というご意見を頂きました。 確かに、できる限りJAX-RSをご存知ない方にもJAX-RSを知って頂きたく、最大公約数的な内容にしたので物足りないと感じた方はいらっしゃるだろうなと思いました。
ですので次(JJUG CCCとは限りませんが)はもうちょっと濃い目の話しをしたいなと思っています。
私のセッションを選んでくださった聴講者の皆様、私のCfPを選んでくださったJJUGスタッフの皆様、資料レビューに付き合ってくれたほげメン・やんくさん、本当にありがとうございました!
まーやさん、たろうさんのコミュニティセッションでお話してきた
関Javaというコミュニティのスタッフをやっているという事でお声がけ頂いてお話してきました。
内容についてはまーやさんが素敵なレポートを書き上げてくださいました!
ここでは時間の都合で話せなかった事を記載しておきます。
苦労話 会場の確保
これは毎回悩みます。
テーマによってどの程度の集客が見込めるか考えて、その規模感に合った会場を探して、という感じで色々考えた挙句ばふぁさんを頼る、というのが最近のアレ。
本当に最近はばふぁさんを頼りすぎているのですが、いつも快く引き受けてくださって当日も笑顔で迎えてくださるのでもうホントなんというかマジ感謝ありがとうございます大好きラブ!って感じです。
抱えている課題(or 過去にあった課題) 調整力不足
運営には登壇者と日程調整して、会場を探して、懇親会のお店を探して、内容によっては当日までにリマインダメールを投げたり、 というような事をする調整力というかなんというか、そんな感じのプログラマの苦手領域っぽいスキルが求められます。
私も最初は……というかまあ今も苦労してはいますが、何度もやっているうちに慣れてきて前よりは上手くやれるようになりました。 そして仕事をする上でも以前よりも調整事ができるようになって業務を円滑に進められるようになったと思っています。
プログラミングの勉強会の運営をやって、プログラミングスキル以外のスキルがレベルアップした、という。 棚ぼた。
その他、個人的な思い
私はコミュニティ運営をしていない一般の参加者だった頃、運営をやっている人たちを神格化していたように思います。 あの人たちはすごい! 参加しかしていない自分よりも上の人だ! 殿上人だ! と。
でも自分が運営に関わってみると運営は神ではないし、「コミュニティ運営してる・してない」はエンジニアの優劣になんら関係無いという事を理解しました。 まあ当たり前っちゃ当たり前なんですが。 とはいえ勉強会って楽しいし、どうやって開催するのかその時は全然見当もつかなかったし、なんだかそう思っちゃってたんですよね。
まあ何が言いたいかというと「コミュニティ運営をしている・していない」は上下関係じゃなくて異なるレイヤーだということです。 やりたい人がやれば良いし、やってる人は楽しくてやってるだけなので運営に関われない事を負い目に感じる必要は無いんだよ、と。 そんな感じです。
私は(これは会場でも言いましたが)勉強会に参加してくださった方が書いた感想ブログを読んだり、 Twitterで「参加してよかった!」とツイートなさるのを見るのがすごく嬉しいので、まだしばらくはコミュニティ運営に関わって行きたいと思っています。
面白いセッションにお誘い頂いたまーやさん・たろうさん、一緒にパネラーをしたまみさん・ひつじさん、それから一緒に楽しんでくださった参加者の皆様、ありがとうございました! 楽しかったですね!
拝聴したセッション
ではここから拝聴したセッションについてざっくり記載します。
EF-3 Reactive Webアプリケーション – そしてSpring 5へ
まきさんのスピード感あふれるセッション(時間が足りない的な意味で)。 スピード感あふれていましたが、すごく分かりやすかったです。 (RxJavaをほんのり触った事があったからそれも幸いしたかな)
内容もすごく良かったのですが、時間が無いと仰っていたのにRod Johnsonとのツーショット写真やSpring Tシャツを嬉しそうに自慢するまきさんがかわいかったのも見所でした。
EF-5 これからのコンピューティングの変化とJava
きしださんの癒しボイス満載のセッション。
FPGAとかよく分からないんですが、自然な流れでJVM・Java言語の話になっていき、最後にはなるほど感が残る素敵なセッションでした。
でもやっぱりFPGAとかよく分かってない事に今気がついたので、きしださんのブログを読んで勉強します。
AB-6 【こっそり始める】Javaプログラマコーディングマイグレーション
資料レビューし合ったやんくさんのセッション。
自分が置かれている環境がアレな場合に、今居る環境を変える、もしくは別の環境に行く、 という二択のうち前者をとる話でした。
それも真正面から玉砕覚悟でぶつかっていくのではなく、隙を見つけてねじ込む搦め手をやってみようよ!っていう感じ。
個人的には「おれはやるだけやった、でもあいつらが分からず屋なんだ」と他責にしちゃうのは好きではないし、 過程よりも結果を残すのが大事だと思っているので、搦め手で確実に改善を狙うスタンスには好感を持ちました。
懇親会
そう長くない時間で色々あったけどまとめきれないので割愛! 楽しかった、とだけ言っておく!
色んな人に挨拶できたけど、しきれなかったので来春にリベンジします!
JJUG CCC 2015 Fall、楽しかった!!!