当使用这样的:
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
?
见文档
静态进口报关类似于正常进口报关。 凡正常进口报关类来自包,让他们可以不封装鉴定使用,静态进口报关静态成员类,允许他们没有类限定的使用。
所以,你应该什么时候使用静态导入? 非常谨慎! 只有使用它时,你会以其他方式引诱声明常量的本地副本,或滥用继承(常数接口反模式)。 换句话说,使用它时,你需要从一个或两个类的静态成员频繁访问。 如果过度使用静态导入功能,它可以使你的程序不可读和不可维护的,污染严重的命名空间,所有导入的静态成员。 你的代码的读者(包括你,你写了几个月后)不会知道的静态成员来自哪个类从。 导入所有的类的静态成员可以是特别有害的可读性; 如果你只需要一个或两个成员,分别导入。 使用得当,静态导入可以使你的程序的可读性,通过移除类名重复的样板。
有这两个你的国家进口之间没有什么区别。 你可以,但是,使用静态导入允许其他类的静态成员不合格访问。 我曾经不得不这样做:
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;
}
如果你经常被用来从另一个类恒定在你的代码,如果静态导入一点也不含糊它是有用的。
顺便说一下,在你的榜样“进口静态org.example.Myclass;” 将不起作用:导入类,进口静电是一类的静态成员。
静态导入的基本思想是,只要您使用的是静态类,静态变量或枚举,您可以将其导入并保存自己从一些打字。
我会阐述我的例子点。
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”之间的区别?
首先应该产生一个编译器错误,因为静态导入仅适用于输入字段或成员类型。 (假设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中
假设你有一个类调用内部的静态字段和方法MyClass
一个叫包内myPackage
,你想直接通过键入访问它们myStaticField
或myStaticMethod
不键入每次MyClass.myStaticField
或MyClass.myStaticMethod
。
注意:你需要做的import myPackage.MyClass
或myPackage.*
用于访问其他资源
在static
后修改import
是用于检索/使用类的静态字段。 在我使用的一个领域import static
是从类检索的常量。 我们也可以申请import static
的静态方法。 确保键入import static
,因为static import
是错误的。
什么是static import
Java中- JavaRevisited -一个很好的资源更多地了解import static
。