このように使われると:
import static com.showboy.Myclass;
public class Anotherclass{}
import static com.showboy.Myclass
とimport com.showboy.Myclass
の違いは何ですか?
Documentation を参照してください。
静的インポート宣言は、通常のインポート宣言と似ています。通常のインポート宣言がパッケージからクラスをインポートしてパッケージの資格なしで使用できる場合、静的インポート宣言はクラスから静的メンバーをインポートして、クラスの資格なしで使用できるようにします。
それでは、いつ静的インポートを使用すべきでしょうか。とても控えめに!それ以外の場合は、定数のローカルコピーを宣言したり、継承を悪用したくなった場合にのみ使用してください(Constant Interface Antipattern)。つまり、1つか2つのクラスから静的メンバーに頻繁にアクセスする必要があるときに使用します。静的インポート機能を使いすぎると、プログラムが読めなくなり、メンテナンスできなくなり、インポートしたすべての静的メンバーで名前空間が汚染される可能性があります。あなたのコードを読んだ人(あなたを含めて、あなたがそれを書いた数ヶ月後)は、どのクラスから静的メンバーが来たのか分からないでしょう。クラスからすべての静的メンバーをインポートすることは、読みやすさにとって特に有害です。メンバーが1人か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はクラスの静的メンバー用です。
静的インポートの基本的な考え方は、静的クラス、静的変数、またはenumを使用しているときはいつでも、それらをインポートして自分の入力を省くことができるということです。
例を挙げて説明します。
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 com.showboy.Myclass "と" import com.showboy.Myclass "の違いは何ですか?
静的インポートはフィールドまたはメンバー型のインポートにのみ機能するため、最初のものはコンパイラエラーを生成するはずです。 (MyClassがshowboyの内部クラスまたはメンバーではないと仮定します)
私はあなたが言ったことだと思う
import static com.showboy.MyClass.*;
これは、MyClassのすべての静的フィールドとメンバを、それらを修飾することなく実際のコンパイル単位で使用できるようにします。
import
を使用すると、Javaプログラマーはパッケージの修飾なしにパッケージのクラスにアクセスできます。
static import
機能は、クラス修飾なしでクラスの静的メンバーにアクセスすることを可能にします。
import
はクラスおよびインターフェースへのアクセスを提供し、static import
はクラスの静的メンバーへのアクセスを提供します。
例:
Withimport
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");
}
}
次も参照してください。 Java 5の静的インポートとは
MyClass
というパッケージ内のmyPackage
というクラス内に静的フィールドとメソッドがあり、MyClass.myStaticField
またはMyClass.myStaticMethod
を毎回入力せずにmyStaticField
またはmyStaticMethod
を入力して直接アクセスするとします。
注:他のリソースにアクセスするにはimport myPackage.MyClass
またはmyPackage.*
を実行する必要があります。
static
の後のimport
修飾子は、クラスの静的フィールドを取得または使用するためのものです。私がimport static
を使用する分野の1つは、クラスから定数を取得することです。静的メソッドにimport static
を適用することもできます。 import static
は間違っているため、必ずstatic import
を入力してください。
Javaのstatic import
とは - JavaRevisited - import static
についてもっと知るための非常に良いリソースです。