464

このように使用すると:

import static com.showboy.Myclass;

public class Anotherclass{}

import static com.showboy.Myclassとはどう違いimport com.showboy.Myclassますか?

4

9 に答える 9

408

ドキュメントを見る

static import 宣言は、通常の import 宣言に似ています。通常のインポート宣言がパッケージからクラスをインポートし、パッケージ修飾なしで使用できるようにするのに対し、静的インポート宣言はクラスから静的メンバーをインポートし、クラス修飾なしで使用できるようにします。

では、いつ静的インポートを使用する必要がありますか? とても控えめに!定数のローカル コピーを宣言したり、継承を悪用したくなる場合 (定数インターフェイス アンチパターン) にのみ使用してください。つまり、1 つまたは 2 つのクラスから静的メンバーに頻繁にアクセスする必要がある場合に使用します。静的インポート機能を使いすぎると、プログラムが読みにくく、保守できなくなり、インポートするすべての静的メンバーで名前空間が汚染される可能性があります。コードの読者 (コードを書いてから数か月後のあなたを含む) は、静的メンバーがどのクラスから来ているのかわかりません。クラスからすべての静的メンバーをインポートすると、読みやすさが特に損なわれる可能性があります。必要なメンバーが 1 つまたは 2 つだけの場合は、個別にインポートします。適切に使用すると、静的インポートはプログラムをより読みやすくすることができます。

于 2008-10-02T13:14:33.857 に答える
242

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

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

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

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

詳細については、ドキュメントを参照してください。

于 2008-10-02T13:42:39.767 に答える
59

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

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

于 2008-10-02T13:18:10.230 に答える
40

静的インポートの基本的な考え方は、静的クラス、静的変数、または列挙型を使用しているときはいつでも、それらをインポートして、入力を省くことができるということです。

例を挙げて私のポイントを詳しく説明します。

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

: 静的インポートにより、コードが読みにくくなる可能性があります。

于 2012-09-19T12:37:26.257 に答える
24

「import static com.showboy.Myclass」と「import com.showboy.Myclass」の違いは?

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

私はあなたが意味したと思います

import static com.showboy.MyClass.*;

これにより、 MyClass のすべての静的フィールドとメンバーが実際のコンパイル単位で使用可能になり、それらを修飾する必要がなくなります...上記で説明したように

于 2009-10-14T11:00:53.820 に答える
15

を使用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 の静的インポートとは

于 2016-01-31T14:07:58.413 に答える
1

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

static importJava の内容 - JavaRevisited - 詳細を知るには非常に優れたリソースですimport static

于 2016-06-09T10:44:34.817 に答える