回答:
ドキュメントを見る
静的インポート宣言は、通常のインポート宣言に類似しています。通常のインポート宣言がパッケージからクラスをインポートし、パッケージ修飾なしでそれらを使用できる場合、静的インポート宣言はクラスから静的メンバーをインポートし、クラス修飾なしでそれらを使用できるようにします。
それでは、静的インポートをいつ使用する必要がありますか?非常に控えめに!定数のローカルコピーを宣言したり、継承を悪用したりしたい場合(定数インターフェイスのアンチパターン)にのみ使用してください。つまり、1つまたは2つのクラスの静的メンバーに頻繁にアクセスする必要がある場合に使用します。静的インポート機能を使いすぎると、プログラムが読みにくく、保守できなくなり、インポートするすべての静的メンバーで名前空間が汚染されます。コードを読んだ人(あなたが書いた数か月後のあなたを含む)は、静的メンバーがどのクラスから来たのかわかりません。クラスからすべての静的メンバーをインポートすると、読みやすさに特に害を及ぼす可能性があります。1つまたは2つのメンバーだけが必要な場合は、個別にインポートします。静的インポートを適切に使用すると、プログラムが読みやすくなります。
あなたが述べる2つのインポートの間に違いはありません。ただし、静的インポートを使用して、他のクラスの静的メンバーへの非修飾アクセスを許可することができます。私がこれをしなければならなかった場所:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
私がすることができます:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
詳細については、ドキュメントをご覧ください。
静的インポートは、クラスの静的フィールド/メソッドをインポートする代わりに使用されます。
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
あなたは書ける :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
コードで別のクラスの定数を頻繁に使用する場合や、静的なインポートがあいまいでない場合に役立ちます。
ところで、あなたの例では "import static org.example.Myclass;" 機能しません:importはクラス用、import staticはクラスの静的メンバー用です。
静的インポートの基本的な考え方は、静的クラス、静的変数、または列挙型を使用しているときはいつでも、それらをインポートして、タイピングを省くことができるということです。
例を挙げてポイントを詳しく説明します。
import java.lang.Math;
class WithoutStaticImports {
public static void main(String [] args) {
System.out.println("round " + Math.round(1032.897));
System.out.println("min " + Math.min(60,102));
}
}
静的インポートを使用した同じコード:
import static java.lang.System.out;
import static java.lang.Math.*;
class WithStaticImports {
public static void main(String [] args) {
out.println("round " + round(1032.897));
out.println("min " + min(60,102));
}
}
注:静的インポートを使用すると、コードが読みにくくなる場合があります。
import static java.lang.Math
アスタリスクなしで書くことは何を意味するでしょうか?
「静的static com.showboy.Myclassのインポート」と「com.showboy.Myclassのインポート」の違いは何ですか?
静的インポートはフィールドまたはメンバータイプのインポートに対してのみ機能するため、最初のコードはコンパイラエラーを生成するはずです。(MyClassが内部クラスまたはshowboyのメンバーではないと想定)
あなたが意味したと思う
import static com.showboy.MyClass.*;
MyClassのすべての静的フィールドとメンバーを、修飾する必要なく実際のコンパイルユニットで使用できるようにします...
import
Javaプログラマは、パッケージの資格なしでパッケージのアクセスクラスにできます。
このstatic import
機能により、クラス修飾なしでクラスの静的メンバーにアクセスできます。
import
一方のクラスおよびインタフェースにアクセス可能性を提供するstatic import
クラスの静的メンバにアクセス可能性を提供します。
例:
インポート
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
静的インポート
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");//Now no need of System.out
out.println("Java");
}
}
static
後の修飾子import
は、クラスの静的フィールドを取得/使用するためのものです。私が使用する1つの領域はimport static
、クラスから定数を取得することです。import static
静的メソッドにも適用できます。間違いなimport static
ので、必ずタイプしてくださいstatic import
。
何がstatic import
Javaで- JavaRevisited -についてもっと知るためにA非常に優れたリソースimport static
。