388

このように使うと:

import static com.showboy.Myclass;

public class Anotherclass{}

違いは何ですかimport static com.showboy.Myclassそしてimport com.showboy.Myclass

8 답변


346

見るドキュメンテーション

静的インポート宣言は次のとおりです。   通常のインポートと同様   宣言。通常の輸入先   宣言はからクラスをインポートする   それらを使用できるようにするパッケージ   パッケージの認定がなければ、   静的インポート宣言のインポート   クラスからの静的メンバー   クラスなしで使われるように   資格。

それではいつ静的インポートを使うべきですか?   とても控えめに!あなたがしたいときだけそれを使用してください   そうでなければローカルを宣言したくなります   定数のコピー、または悪用する   継承(定数インタフェース   アンチパターン)言い換えれば、それを使用   頻繁なアクセスが必要なとき   1つか2つの静的メンバー   クラス。静電気を使いすぎると   特徴を輸入して下さい、それはあなたを作ることができます   プログラムが判読不能かつ保守不能   その名前空間をすべての   インポートする静的メンバーの読者   あなたのコード(あなたも含めて、数ヶ月)   あなたがそれを書いた後)知りません   静的メンバーが来るクラス   から。すべての静的をインポートする   クラスのメンバーは   読みやすさに特に有害です。   あなたが1人か2人のメンバーだけを必要とするならば、   個別にインポートしてください。中古   適切には、静的インポートは作ることができます   プログラムをもっと読みやすくする   繰り返しの定型句を削除   クラス名


  • @xslによる上記の警告に完全に同意します。間違いなく非常に便利な分野の1つは、junitのAssertです。static org.junit.Assert。*をインポートしてください。あなたのすべてのユニットテストに。 - Yves B
  • - 単純な説明を書くのではなく、非常に長くて目を引くドキュメントファイルではないコントロールペースト用。 - Błażej Michalik
  • @xsl投稿の下部は引用ブロックになっていますか?入力したように見えます。 - Ferrybig
  • @Ferrybig:リンクされたドキュメントからの引用です。 - Joshua Snider
  • のようですincludeRubyで! - Chloe

206

あなたが述べるこれら二つの輸入の間に違いはありません。ただし、静的インポートを使用して、他のクラスの静的メンバーへの限定されていないアクセスを許可することができます。私はこれをしなければならなかった場所:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

私がすることができます:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .


53

静的インポートは、次の代わりにクラスの静的フィールド/メソッドをインポートするために使用されます。

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はクラスの静的メンバー用です。


33

静的インポートの基本的な考え方は、静的クラス、静的変数、または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 java.lang.Mathアスタリスクなしで? - Chris Middleton
  • @AmadeusDrZaius nope、import staticはクラスの静的メンバ専用です。 - Harry
  • いい答えです!多くの初心者のためこの記事を読む1つは少し警告を与えるべきです:アスタリスクを使いすぎないでください名前空間の汚染を防ぐために。 - goerlibe

22

import static com.showboy.Myclass "と" import com.showboy.Myclass "の違いは何ですか?

静的インポートはフィールドまたはメンバー型のインポートにのみ機能するため、最初のものはコンパイラエラーを生成するはずです。 (MyClassがshowboyの内部クラスまたはメンバーではないと想定します)

私はあなたが言ったことだと思う

import static com.showboy.MyClass.*;

これは、MyClassのすべての静的フィールドとメンバを、それらを修飾することなく実際のコンパイル単位で使用できるようにします。


12

importJavaプログラマーがパッケージの修飾なしにパッケージのクラスにアクセスすることを許可します。

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");  

 }   
} 

また見なさい:Java 5の静的インポートとは


2

という名前のクラス内に静的フィールドとメソッドがあるとします。MyClassというパッケージの中myPackageそして、あなたはタイプして直接それらにアクセスしたいです。myStaticFieldまたはmyStaticMethod毎回入力せずにMyClass.myStaticFieldまたはMyClass.myStaticMethod

注:あなたがする必要がありますimport myPackage.MyClassまたはmyPackage.*他のリソースにアクセスするため


1

static後修飾子importクラスの静的フィールドを取得/使用するためのものです。私が使用する1つの分野import staticクラスから定数を取得するためのものです。 私達はまた適用してもいいですimport static静的メソッド必ず入力してくださいimport staticなぜならstatic import間違っている。

何ですかstatic importJavaで - JavaRevisited - 詳細について知るための非常に良い情報源import static

リンクされた質問


関連する質問

最近の質問