Java8の型キャストを綺麗に!
タイトルのとおりです。私は Javaの旧来の型キャストの構文があまり好きではないです。
動的なデータ操作なのに謎の構文を使わないといけないところがね。C言語由来でしょうか?
こういうのは関数的に書きたいところ。
とりあえずまずは例から。下記のような 2通りの書き方があると思います。
SomeClass instance = (SomeClass) anotherClassInstance; // 1
SomeClass instance = SomeClass.class.cast(anotherClassInstance) // 2
1番は避けたいやつですね、2番はいいんですが1行が長くなりがちなのが玉に瑕。
そこでこんなのを考えました。
public class As {
public static <T> T of(Object value) {
return (T) value;
}
}
これを使うと下記のように割と綺麗に書けます。
SomeClass instance = As.of(anotherClass);
lombok を使っているならこんな風です。
val instance = As.<SomeClass>of(anotherClass);
以上!