Java 什么是;“静态”;“后面的修饰语”;进口;什么意思?
这样使用时:Java 什么是;“静态”;“后面的修饰语”;进口;什么意思?,java,modifier,static-import,Java,Modifier,Static Import,这样使用时: import static com.showboy.Myclass; public class Anotherclass{} 导入静态com.showboy.Myclass和导入com.showboy.Myclass之间有什么区别 静态导入声明是 与正常进口类似 宣言。正常进口在哪里 声明从中导入类 软件包,允许使用它们 如果没有包装鉴定,则 静态进口申报进口 来自类的静态成员,允许 它们可以在没有课的情况下使用 资格 那么什么时候应该使用静态导入呢? 非常节俭!只在你需要的时
import static com.showboy.Myclass;
public class Anotherclass{}
导入静态com.showboy.Myclass和导入com.showboy.Myclass之间有什么区别
静态导入声明是
与正常进口类似
宣言。正常进口在哪里
声明从中导入类
软件包,允许使用它们
如果没有包装鉴定,则
静态进口申报进口
来自类的静态成员,允许
它们可以在没有课的情况下使用
资格
那么什么时候应该使用静态导入呢?
非常节俭!只在你需要的时候使用它
否则,您可能会倾向于声明本地
常数的副本,或被滥用
继承(常量接口)
反模式)。换句话说,使用它
当您需要频繁访问
来自一个或两个的静态成员
上课。如果你过度使用静电传感器
导入功能,它可以使您的
程序不可读且不可维护,
使用所有
您导入的静态成员。读者
你的代码(包括你,几个月
你写完之后)就不知道了
静态成员来自哪个类
从…起导入所有静态
类中的成员可以是
尤其对可读性有害;
如果你只需要一两个成员,
单独导入它们。使用
适当地,静态导入可以使
您的程序更可读,通过
消除重复的样板
类名称的集合
静态导入用于导入类的静态字段/方法,而不是:
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 org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
我可以这样做:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
你可以在地图上看到更多
“导入静态com.showboy.Myclass”和“导入com.showboy.Myclass”之间的区别是什么
第一个应该生成编译器错误,因为静态导入仅适用于导入字段或成员类型。(假设MyClass不是内部类或showboy的成员)
我想你是说
import static com.showboy.MyClass.*;
这使得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));
}
}
注意:静态导入会使您的代码读起来很混乱。假设您在名为
MyClass
的包中有一个名为myPackage
的类中有静态字段和方法,您希望通过键入myStaticField
或myStaticMethod
直接访问这些字段和方法,而无需每次键入MyClass.myStaticField
或MyClass.myStaticMethod
注意:您需要执行以下操作:
导入myPackage.MyClass
或myPackage.
对于访问其他资源,
导入
允许java程序员访问包的类,而无需包限定
静态导入
功能允许在没有类限定的情况下访问类的静态成员
import
提供类和接口的可访问性,而static import
提供类的静态成员的可访问性
示例:
使用导入
使用静态导入
另请参见:导入后的
静态
修饰符用于检索/使用类的静态字段。我使用import static
的一个区域是从类中检索常量。
我们还可以在静态方法上应用import static
。确保键入import static
,因为static import
错误
-这是一个非常好的资源,可以了解更多有关
导入静态的信息。这是一个非常好的示例。npt在WW中的数学技巧
在另一个文件中
import static com.java2novice.stat.imp.pac1.MyStaticMembClass.*;
我完全同意@xsl上面的警告。对于junit的断言来说,它确实非常有用的一个方面是:导入静态org.junit.Assert.*用于所有的单元测试。--用于控件粘贴非常长且不太引人注目的文档文件,而不是编写简单的解释。@xsl是文章的下半部分应该在引号块中吗?看起来像是你键入的。@Ferrybig:这是链接文档中的一段引用。就像在Ruby中一样!写导入静态java.lang.Math
而不带星号是否意味着什么?@AmadeusDrZaius不,导入静态只针对类的静态成员。回答得好!由于许多“新手”阅读了这篇文章,我们应该给他们一个小小的警告:不要过度使用星号来防止名称空间污染。
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");
}
}
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.*;