2007年12月11日火曜日

JavaFXファイルでJavaクラスを輸入するときはご注意を

現状の逐次解釈(Interpreter)版のJavaFXプログラムで、Javaのクラスを輸入(import)して使うときは、ちょっと注意が必要です。
少なくとも現状の逐次解釈版のJavaFX(一括変換(Compiler)版では調べていません)プログラムでは、java.lang.Systemクラスなどを輸入して使う場合、包み(Package)全体の輸入宣言「import java.lang.*;」で済ますと、思わぬ誤動作をすることがありますので注意が必要です。
私が経験した事例では、
java.lang包みの輸入宣言を行っているプログラムで、クラスに数値(Number)型の属性を定義し、その属性に実数を格納したときに、その整数部分しか格納されないというものでした(同じプログラム内で、クラス属性ではなく、数値型としてvar宣言した変数には実数として格納されるので、ややこしい)。
いろいろ調べた結果、包み全体ではなく、
java.lang.Systemクラスを明示的に宣言することで、この不具合が解消されることが分かりました。
もともと、Javaのプログラムでも、包み全体ではなく、なるべく個々のクラスごとに輸入宣言を記述する方が良いとはされていますが、包み全体の輸入を宣言してもプログラムが
動作をすることはありません。ですから、包みの宣言でも正常に動作するのが、本来の姿だとは思いますが。

0 件のコメント: