“导入”后的“静态”修饰符是什么意思?

当使用像这样:

import static com.showboy.Myclass; public class Anotherclass{} 

import static com.showboy.Myclassimport com.showboy.Myclass之间有什么区别?

见文档

静态导入声明类似于正常的导入声明。 如果正常的import声明从包装中导入类别,允许它们在没有包装资格的情况下使用,静态导入声明从类别导入静态成员,允许它们在没有类别资格的情况下使用。

那么什么时候应该使用静态导入? 非常谨慎! 只有当你想要声明本地副本的常量或滥用inheritance(Constant Interface Antipattern)时才使用它。 换句话说,当你需要频繁访问一个或两个类的静态成员时使用它。 如果您过度使用静态导入function,则可能导致您的程序无法读取且无法维护,从而导致您导入的所有静态成员污染其名称空间。 你的代码的读者(包括你,在你写了几个月后)不会知道静态成员来自哪个类。 从类中导入所有静态成员对可读性尤其有害; 如果您只需要一个或两个成员,请单独导入它们。 使用适当的,静态导入可以使您的程序更具可读性,通过删除重复类名称的样板。

这两个import你没有区别。 但是,您可以使用静态导入来允许对其他类的静态成员进行非限定的访问。 我曾经这样做的地方:

 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;” 将无法正常工作:导入是为类,导入静态是为一个类的静态成员。

静态导入的基本思想是,无论什么时候使用静态类,静态variables或枚举,都可以导入它们并保存一些input。

我将用例子来阐述我的观点。

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

注意 :静态导入可能会让您的代码感到困惑,无法阅读。

“导入静态com.showboy.Myclass”和“导入com.showboy.Myclass”之间的区别?

第一个应该生成一个编译器错误,因为静态导入只适用于导入字段或成员types。 (假设MyClass不是来自showboy的内部类或成员)

我想你的意思

 import static com.showboy.MyClass.*; 

这使得MyClass中的所有静态字段和成员都可以在实际的编译单元中使用,而不必限定它们……如上所述

import允许Java程序员访问包的类没有包资格。

static importfunction允许访问类的静态成员没有类的资格。

import为类和接口提供了可访问性,而static import则为类的静态成员提供了可访问性。

例如:

随着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的类中有静态的字段和方法,并且你希望直接通过inputmyStaticField或myStaticMethod来访问它们,而不用每次inputmyClass.myStaticField或myClass.myStaticMethod。

注意:您需要导入myPackage.MyClass或myPackage。*来访问其他资源

import后的static修改器用于检索/使用类的静态字段。 我使用import static一个领域是从类中检索常量。 我们也可以在静态方法上应用import static 。 确保键入import static因为static import是错误的。 了解import static一个很好的链接是http://javarevisited.blogspot.com/2012/10/what-is-static-import-in-java-5-example-tutorial.html