このように使用すると:
import static com.showboy.Myclass;
public class Anotherclass{}
import static com.showboy.Myclass
とはどう違いimport com.showboy.Myclass
ますか?
このように使用すると:
import static com.showboy.Myclass;
public class Anotherclass{}
import static com.showboy.Myclass
とはどう違いimport com.showboy.Myclass
ますか?
ドキュメントを見る
static import 宣言は、通常の import 宣言に似ています。通常のインポート宣言がパッケージからクラスをインポートし、パッケージ修飾なしで使用できるようにするのに対し、静的インポート宣言はクラスから静的メンバーをインポートし、クラス修飾なしで使用できるようにします。
では、いつ静的インポートを使用する必要がありますか? とても控えめに!定数のローカル コピーを宣言したり、継承を悪用したくなる場合 (定数インターフェイス アンチパターン) にのみ使用してください。つまり、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 が 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");
}
}
参照 : Java 5 の静的インポートとは
後のstatic
修飾子import
は、クラスの静的フィールドを取得/使用するためのものです。私が使用する領域の 1 つimport static
は、クラスから定数を取得することです。import static
静的メソッドにも適用できます。は間違っているimport static
ので必ず入力してください。static import
static import
Java の内容 - JavaRevisited - 詳細を知るには非常に優れたリソースですimport static
。