きっかけ
OCPJ11 Goldの勉強をしている際、マルチキャッチの問題を解いた際に間違えたので載せる。
テストコード
public class Ocpj3_9 {
public static void main(String[] args) {
try{
throw new Ex1();
}catch (Ex1 | RuntimeException e) {
// eは暗黙的にfinal!!
}
}
static class Ex1 extends Exception {
}
static class Ex2 extends Ex1 {
}
}
varが導入されたので、再代入可能かと思ってしまったが、
参考リンク
小さく注記で複数の例外型を処理する場合、catchパラメータは暗黙的にfinalになりますって書いてあるのを見て、怒りが爆発するところだった。
所感
実行時に型が決まるのだろうか?
エディタ上で見る限りは、複合型のようだったが、ここら辺の仕組みはどうなっているのだろうか?
型に厳密な言語である理解でいるのだが、ここら辺が少しあいまいになっているなぁ~と感じた。