Date: Sat, 15 Jan 2000 16:32:14 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:29945] Re: anonymous class vs inner class (Re:A question about URL class and getImage method) To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <200001150732.QAA12046@cafe.muraoka.info.waseda.ac.jp> 各種 Java コンパイラが anonymous inner class をどのように扱うか。 > > > > (それとも、無名インナークラスはfinal宣言されているのでしょうか? > > > > していてもおかしくないな・・・。) > > > > そもそも指定できませんが、特に final を指定しなくても、 > > final クラスになります。 > > (Linux 上で、Blackdown の JDK 1.1.8 と 1.2.2 RC3.9d で確認) > > あれ? っと、調べてみると、JDK 1.3 だと final classにならないようです。 各種 Java コンパイラが anonymous inner class をどう扱うかを調べました。 結論を言いますと、コンパイラによって扱いが全然異なります。 仮想マシン仕様的にはどの挙動が正しいのか、は調べていません。 次の 5種類を試しました。 * JDK 1.1.8 と 1.2.2 と 1.3beta の javac Linux 上の Blackdown 1.1.8v1 と 1.2.2 RC3.9d、Windows 上の 1.3beta。 * Jikes(*1) 1.11 * KJC(*2) 1.4C (*1) Jikes - IBM 製 Java コンパイラ。C++ で記述されている。 Java 言語, 仮想マシンの仕様に忠実であろう、という志向が強い。 http://OSS.Software.IBM.Com/developerworks/opensource/jikes/project/ (*2) Kopi Java Compiler - Java で記述された、GPL な Java コンパイラ。 http://www.dms.at/kopi/kjc.html 1. anonymous inner class のアクセスフラグ。 javac 1.1.8 final, synchronized javac 1.2.2 final, synchronized javac 1.3beta synchronized Jikes 1.11 synchronized KJC 1.4C synchronized 2. anon. inner class のコンストラクタに Synthetic 属性 (attribute) が付くか否か。 javac 1.1.8 yes javac 1.2.2 yes javac 1.3beta no Jikes 1.11 yes KJC 1.4C no 3. InnerClasses 属性の中身。 これについては、仮想マシン仕様を読まないと意味がわからないと思います。 3.1 outer class に付く InnerClasses 属性 inner_class outer_class inner_name inner_class_access_flags javac 1.1.8 非零 非零 空文字列 private, final javac 1.2.2 非零 零 零 private, final javac 1.3beta 非零 零 零 static Jikes 1.11 (InnerClasses 属性が付かない) KJC 1.4C (InnerClasses 属性は付くが、number_of_classes が 0) 3.2 anon. inner class に付く InnerClasses 属性 inner_class outer_class inner_name inner_class_access_flags javac 1.1.8 非零 非零 空文字列 private, final javac 1.2.2 非零 零 零 private, final javac 1.3beta 非零 零 零 static Jikes 1.11 非零 零 零 private, static KJC 1.4C (InnerClasses 属性は付くが、number_of_classes が 0) 千差万別です。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp