Javaで静的インポートを使用しようとしましたが、間違って記述していました
static import java.lang.System.out;
そして、コンパイルされたコード(「out」記号は見つかりませんでしたが)、構文エラーはありません。
では、「静的インポート」は実際にはどういう意味ですか?
これはコンパイルされるべきではありません。
static import java.lang.System.out;
JLSによると、単一の静的インポートは次のようになります。
import static java.lang.System.out;
Java importステートメントのすべての形式はキーワードで始まりimport
ます。キーワードを使用できる他のコンテキスト(つまり、importステートメント以外)はないと思いますimport
。
注:このコンテキストでは、import
andstatic
キーワードは修飾子ではないため、「修飾子は任意の順序で指定できます」というメタルールはここでは適用されません。
要するに、コンパイラ/IDEが壊れているか混乱している...またはあなたが見ているものは実際のJavaソースコードではありません。
どうやら、それはバグでした。
ラムダをテストするために、SunのJava 8(JDK 1.8)を使用しています...しかし、「静的インポート」が受け入れられるのは奇妙だと思いました。
すべての答えをありがとう。これをSunに報告します。:)
クラスの静的メンバーにアクセスするには、それを含む完全なクラス名を使用する必要があります。たとえば、クラスのpi
値にアクセスするには、を使用する必要があります。ただし、()をインポートすると、コードで使用するだけでアクセスできます。Math
java.lang.Math.PI
import static java.lang.Math.PI
PI