きっかけ
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になります
って書いてあるのを見て、怒りが爆発するところだった。
所感
実行時に型が決まるのだろうか?
エディタ上で見る限りは、複合型のようだったが、ここら辺の仕組みはどうなっているのだろうか?
型に厳密な言語である理解でいるのだが、ここら辺が少しあいまいになっているなぁ~と感じた。