SE8の言語仕様の変更の一つに、キャスト演算子による交差型のサポートがある。
交差型というのは、型を&でつなげたもののこと。今までは、ジェネリクスの型パラメータにおける型境界にだけ使用することができた。たとえば、Fooのような記述になる。
その交差型がキャスト演算子でも使えるようになった。
(Type1 & Type2) expr;
&で繋げられる型は3つでも4つでも問題ない。
ただし、一つ目の型は参照型で、二つ目以降の型はインターフェースでなければならない。
たとえば次のコードがあるとする。
interface SerializeableF extends F, Serializable {}
method((SerializableF) () -> {});
これを次のように簡潔に書くことができる。
method((F & Serializable) () -> {});
参考:
http://d.hatena.ne.jp/bitter_fox/20140319/1395221764