Java1.5Checker.jar (JastAdd) の型検査の不具合
JastAdd (JastAddJ) を試してみたのだが、1.5 の FrontEnd の generics 周りの型チェックに問題があるみたいだ。
使用したのは、http://jastadd.org/the-jastadd-extensible-java-compiler のページにある http://builds.jastadd.org/JastAddJ/latest/Java1.5Checker.jar。
svn にある最新版もこの問題点は変わらない。
次の Java コードが型検査に通ってしまう。
class Test<X> { X x=new Object(); }
このクラスを含むファイルを、Test.java とし、Java1.5Checker.jar があるディレクトリで、
java -classpath Java1.5Checker.jar JavaChecker Test.java
とすれば、通ることが確認できる。
これは、javac の型検査には通らない。
Test.java:2: 互換性のない型 検出値 : java.lang.Object 期待値 : X X x=new Object(); ^ エラー 1個
となる。
詳細を省くが、クラス Test が持つコードによっては、実行時に ClassCastException の例外が発生する可能性がある。