問題タブ [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.
java - インポートされたクラスがサードパーティのライブラリを拡張すると、Java import static が失敗する
問題のセットアップは、3 つの Java ライブラリで構成されています (読みやすくするためにすべてのパッケージ名を削除しました。すべての場所で完全修飾名が使用されています)。
external-lib: 抽象クラスを提供します
/li>my-lib-A: クラスを提供します
external-lib
my-lib-A のクラスパスにあります。my-lib-B は ClassA から FOO を静的にインポートします。
my-lib-A
my-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 ClassA
ClassA.FOO
import static ClassA.FOO
質問 2: my-lib-A から別のクラスを拡張してから AbstractExternal を拡張すると、なぜ機能するのですか?
編集: 重要な情報: 問題のコンパイラはEclipse Compiler for Java (ECJ) です。
編集 2: javac は ECJ と同期しており、静的インポートが失敗している間、ClassB で通常のインポートとクラス アクセスをコンパイルできます。
java - 同じ静的変数名を持つ静的インポート
クラス Long および Integer のメンバーの静的インポートを行っています。
この変数 MAX_VALUE を使用して出力しようとすると、エラーが発生します。
これで問題ありません。エラーを削除するには、このあいまいさを解決するために 1 つの静的インポートを削除する必要があります。
私が得ている主な問題は、*
整数クラスの静的インポートでワイルドカードを使用すると、クラスがエラーなしでコンパイルされることです:
あいまいさはまだ存在する必要があります。これが問題なくコンパイルされるのはなぜですか?