42. これが最強のキャッチャーだ
public class FizzBuzzCatcher {
private FizzBuzzCatcher(){}
public static AutoCloseable make(int i) {
try {
FizzBuzzPitcher.overThrow(i);
} catch(FizzException | BuzzException | FizzBuzzException | SonomamaException e){
return (AutoCloseable) e;
}
// 投げられないのはおかしいから投げる
throw new IllegalStateException();
}
public static void receive(int i) throws Exception {
try(AutoCloseable ex = make(i)){}
}
}
こういうふざけたコードを書いてたら Javaコ
ンパイラのバグを踏みました
※1.8.0_25のバグで、1.8.0_72で直ってま
す
43. 14:39:40: Executing external task 'build'...
コンパイラで例外が発生しました(1.8.0_25)。
Bug Paradeで重複がないかをご確認のうえ、Java Developer Connection (http://java.sun.
com/webapps/bugreport)でbugの登録をお願いいたします。レポートには、そのプログラムと
下記の診断内容を含めてください。ご協力ありがとうございます。
java.lang.ClassCastException: com.sun.tools.javac.code.Type$UnionClassType cannot be cast to com.sun.tools.
javac.code.Type$IntersectionClassType
at com.sun.tools.javac.code.Types$8.visitClassType(Types.java:1540)
at com.sun.tools.javac.code.Types$8.visitClassType(Types.java:1497)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:778)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4451)
at com.sun.tools.javac.code.Types.isCastable(Types.java:1488)
at com.sun.tools.javac.comp.Check.checkCastable(Check.java:568)
at com.sun.tools.javac.comp.Check.checkCastable(Check.java:565)
44.
45.
46. [JDK-8071291]
Compiler crashes trying to cast UnionType to
IntersectionClassType
https://bugs.openjdk.java.net/browse/JDK-
8071291
バグレポートの書き方
http://yyyank.blogspot.jp/2016/07/javajdk.html