像这样使用时:
import static com.showboy.Myclass;
public class Anotherclass{}
import static com.showboy.Myclass
和 import com.showboy.Myclass
有什么区别?
静态导入声明类似于正常的导入声明。正常导入声明从包中导入类,允许在没有包限定的情况下使用它们,静态导入声明从类中导入静态成员,允许它们在没有类限定的情况下使用。那么什么时候应该使用静态导入呢?非常节俭!仅当您想要声明常量的本地副本或滥用继承(常量接口反模式)时才使用它。换句话说,当您需要频繁访问一个或两个类的静态成员时使用它。如果你过度使用静态导入功能,它会使你的程序不可读和不可维护,你导入的所有静态成员都会污染它的命名空间。您的代码的读者(包括您,在您编写代码几个月后)将不知道静态成员来自哪个类。从一个类中导入所有的静态成员对可读性尤其有害;如果您只需要一两个成员,请单独导入它们。使用得当,静态导入可以通过删除类名重复的样板来使您的程序更具可读性。
你说的这两个进口没有区别。但是,您可以使用静态导入来允许对其他类的静态成员进行非限定访问。我曾经必须这样做的地方:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
我可以做这个:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
您可以在 documentation 中查看更多信息。
静态导入用于导入类的静态字段/方法,而不是:
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 java.lang.Math
是否意味着什么?
“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");
}
}
另请参阅:What is static import in Java 5
假设您在一个名为 myPackage
的包中的一个名为 MyClass
的类中有静态字段和方法,并且您希望通过键入 myStaticField
或 myStaticMethod
直接访问它们,而无需每次都键入 MyClass.myStaticField
或 MyClass.myStaticMethod
。
注意:您需要执行 import myPackage.MyClass
或 myPackage.*
才能访问其他资源
import
之后的 static
修饰符用于检索/使用类的静态字段。我使用 import static
的一个领域是从类中检索常量。我们还可以将 import static
应用于静态方法。确保键入 import static
,因为 static import
是错误的。
What is static import
in Java - JavaRevisited - 了解更多有关 import static
的非常好的资源。
很好的例子。在 wwww 中使用数学的 npt 典型......
https://www.java2novice.com/java-fundamentals/static-import/
public class MyStaticMembClass {
public static final int INCREMENT = 2;
public static int incrementNumber(int number){
return number+INCREMENT;
}
}
在另一个文件中包括
import static com.java2novice.stat.imp.pac1.MyStaticMembClass.*;
include
!