ghostrider:
私は、特定の使用していますstatic
別のインターフェイスから変数をので、私は私のクラスでは、このインターフェイスをインポートしています。しかし、これはimport
では見られないが.class
、私のJavaクラスのファイル。しかし、非の他の輸入static
メンバーが見られます。これは正常な動作ですか?yesの場合、なぜ?
ヨアヒム・ザウアー:
輸入は、すべての.classファイルにエンコードされることはありません、彼らはあなたのJavaソースコード内のクラスおよび/またはメンバーのための完全な名前を使用することを避けるために純粋にシンタックスシュガーです。あなたが使用している場合、クラスファイルは認識していないimport package.AClass
か、単に呼ばpackage.AClass
ソースファイルにそのフルネームで。
あなたが見ることになるかもしれないことは、二つの理由の一つが原因であるかもしれない、あなたのインポートフィールドへの参照がすべてであなたのクラスでは見つからなかったということです。
あなたは、クラス/メンバーをインポートしますが、実際にあなたのコードの残りの部分でそれを参照することはありません。
輸入は糖衣構文であるという事実、インポートされたものへの参照は、あなたの「実際のコード」に存在しないことを、この手段によるもの
あなたは含まのstatic finalフィールド参照、コンパイル時定数そのフィールドへの参照が生成されませんが、その場合には値が直接インライン化されます。
class A { public static final String CONSTANT = "foo"; } class B { private String field = A.CONSTANT; }
この場合のクラスファイルは、
B
値が含まれます"foo"
となしクラスへの参照をA
。