次の簡単なコード例を考えてみましょう。
public class TestStaticImport {
static enum Branches {
APPLE,
IBM
}
public static void doSomething(Branches branch) {
if (branch == APPLE) {
System.out.println("Apple");
}
}
}
このコードをコンパイルしようとすると、エラーメッセージが表示されます。
java: cannot find symbol
symbol: variable APPLE
location: class TestStaticImport
これは、これの静的インポートを導入することで解決できますenum
:
import static
..。TestStaticImport.Branches.*
しかし、この瞬間に(私にとって)理解できないことが始まります:
TestStaticImport
このソリューションは正常に機能し、クラスが空のルートパッケージに移動されるまで、つまり何も存在しないまで、すべてが適切にコンパイルされます。
package blablabla;
このJavaファイルの先頭。
コード行:import static TestStaticImport.Branches.*;
Intellij IDEAでは有効なコードとして強調表示されています(情報のためだけにIDEの名前は関係ありません)が、そのようなコードをコンパイルしようとすると、次のエラーが表示されます:
java: package TestStaticImport does not exist
したがって、実際には2つの質問があります。
1)主な質問:import static
空のディレクトリから移動できないのはなぜですか?
2)静的インポートを除いて、名前だけを使用して(つまり、APPLE
の代わりに)列挙型のフィールドへのコード参照を許可する別の方法(存在する場合)は何ですか?Branches.APPLE
PS空のパッケージは醜いスタイルなどだと言わないでください。この質問は単なる理論上の問題です。