わかった気になっているうちにやっておこうシリーズ第二弾。
EclipseでJDK9-eaの設定をする記事はこちら。
Java9から匿名クラスの総称型もダイヤモンド演算子(って言い方でいいの?)で省略して書けるらしい。
試してみようじゃないの。
というわけで、よくみるJavaFXのカラムクラス内でセルの定義を匿名クラスで作るコードで検証。
(大人気のJavaFXだからね、よくみるよね、ね?)
というわけで、テーブルカラムを継承して自分のテーブルカラムを作る。
そしてその中で、テーブルセルの挙動を変えたい!みたいなコード。
package application; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; public class TestColumn extends TableColumn<Person, String> { public TestColumn() { // セルをつくるぞ! this.setCellFactory(column -> { return new TableCell<Person, String>() { @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (!empty) { // なんか処理 } } }; }); } }
で、ここを毎回、えーと型はなんだったかな…?とクラスの先頭までスクロールしてコピペして書くのがめんどくさい。
this.setCellFactory(column -> { return new TableCell<Person, String>() {
でも、書かないと怒られる。
匿名クラスじゃなきゃできるんだからさっ。ねっ?
で、書き換えてみました。
this.setCellFactory(column -> { return new TableCell<>() {
お、エラーが出ない。
素晴らしい。
念のため、コンパイルのレベルを1.8に戻してみる。
やっぱり怒られるよね。
今回の内容とは関係ないけど、Eclipseなんだかjavafxパッケージの下にあるクラスがコード保管されない・・・?
久しぶりにimport文を自分で書いたよね。