問題タブ [static-import]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
270 参照

java - インポートされたクラスがサードパーティのライブラリを拡張すると、Java import static が失敗する

問題のセットアップは、3 つの Java ライブラリで構成されています (読みやすくするためにすべてのパッケージ名を削除しました。すべての場所で完全修飾名が使用されています)。

  1. external-lib: 抽象クラスを提供します

    /li>
  2. my-lib-A: クラスを提供します

    external-libmy-lib-A のクラスパスにあります。

  3. my-lib-B は ClassA から FOO を静的にインポートします。

    my-lib-Amy-lib-B のクラスパスにありますが、external-libそうではありません。

問題: このimport static行で次のエラーが発生します。

The type AbstractExternal cannot be resolved. It is indirectly referenced from required .class files.

ただし(1)、ClassBを変更する場合

コンパイラは満足しています。

ただし (2)、2 つ目の抽象化を追加する場合、my-lib-A のように 2 つ

上記の例の ClassA.FOO の静的インポートは機能します。

質問 1: なぜ動作中にimport static ClassA.FOO失敗するのですか?import ClassAClassA.FOO

import static ClassA.FOO質問 2: my-lib-A から別のクラスを拡張してから AbstractExternal を拡張すると、なぜ機能するのですか?

編集: 重要な情報: 問題のコンパイラはEclipse Compiler for Java (ECJ) です。

編集 2: javac は ECJ と同期しており、静的インポートが失敗している間、ClassB で通常のインポートとクラス アクセスをコンパイルできます。

0 投票する
1 に答える
284 参照

java - 同じ静的変数名を持つ静的インポート

クラス Long および Integer のメンバーの静的インポートを行っています。

この変数 MAX_VALUE を使用して出力しようとすると、エラーが発生します。

これで問題ありません。エラーを削除するには、このあいまいさを解決するために 1 つの静的インポートを削除する必要があります。

私が得ている主な問題は、*整数クラスの静的インポートでワイルドカードを使用すると、クラスがエラーなしでコンパイルされることです:

あいまいさはまだ存在する必要があります。これが問題なくコンパイルされるのはなぜですか?