“ static”とは何ですか“ import”の後の修飾子平均?

StackOverflow https://stackoverflow.com/questions/162187

  •  03-07-2019
  •  | 
  •  

質問

次のように使用する場合:

import static com.showboy.Myclass;

public class Anotherclass{}

import com.showboy.Myclassをインポート import com.showboy.Myclass の違いは何ですか?

役に立ちましたか?

解決

ドキュメント

  

静的インポート宣言は   通常のインポートに類似   宣言。通常のインポート場所   宣言はからクラスをインポートします   それらを使用できるようにするパッケージ   パッケージの資格なしで、   静的インポート宣言のインポート   クラスの静的メンバー、許可   クラスなしで使用する   資格。

     

では、いつ静的インポートを使用する必要がありますか?   非常に控えめに!あなたがしたいときにのみそれを使用してください   そうでなければ、ローカルを宣言したくなる   定数のコピー、または悪用   継承(定数インターフェイス   アンチパターン)。言い換えれば、それを使用する   頻繁にアクセスする必要がある場合   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 com.showboy.Myclass"の違いおよび" import com.showboy.Myclass"?

静的インポートはフィールドまたはメンバータイプのインポートに対してのみ機能するため、最初はコンパイラエラーを生成する必要があります。 (MyClassがショーボーイのインナークラスまたはメンバーではない場合)

あなたが意図していたと思う

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

 }   
} 

参照: Java 5の静的インポートとは

myPackage というパッケージ内の MyClass というクラス内に静的フィールドと静的メソッドがあり、 myStaticField または myStaticMethod を毎回入力せずに MyClass.myStaticField または MyClass.myStaticMethod

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

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

Javaの static import とは-JavaRevisited - import static の詳細を知るための非常に優れたリソース。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top