クラスファイルに不足しているファイルのインポート

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=28853&siteId=1