什么是后“静态”修饰符“进口”是什么意思?什么是后“静态”修饰符“进口”是什么意思?(What do

2019-05-08 14:54发布

当使用这样的:

import static com.showboy.Myclass;

public class Anotherclass{}

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

Answer 1:

见文档

静态进口报关类似于正常进口报关。 凡正常进口报关类来自包,让他们可以不封装鉴定使用,静态进口报关静态成员类,允许他们没有类限定的使用。

所以,你应该什么时候使用静态导入? 非常谨慎! 只有使用它时,你会以其他方式引诱声明常量的本地副本,或滥用继承(常数接口反模式)。 换句话说,使用它时,你需要从一个或两个类的静态成员频繁访问。 如果过度使用静态导入功能,它可以使你的程序不可读和不可维护的,污染严重的命名空间,所有导入的静态成员。 你的代码的读者(包括你,你写了几个月后)不会知道的静态成员来自哪个类从。 导入所有的类的静态成员可以是特别有害的可读性; 如果你只需要一个或两个成员,分别导入。 使用得当,静态导入可以使你的程序的可读性,通过移除类名重复的样板。



Answer 2:

有这两个你的国家进口之间没有什么区别。 你可以,但是,使用静态导入允许其他类的静态成员不合格访问。 我曾经不得不这样做:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

我可以做这个:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .

你可以看到更多的文档 。



Answer 3:

静态导入用于导入静态字段/类的方法,而不是:

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;” 将不起作用:导入类,进口静电是一类的静态成员。



Answer 4:

静态导入的基本思想是,只要您使用的是静态类,静态变量或枚举,您可以将其导入并保存自己从一些打字。

我会阐述我的例子点。

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

:静态导入可以使你的代码混淆阅读。



Answer 5:

“进口静态com.showboy.Myclass”和“进口com.showboy.Myclass”之间的区别?

首先应该产生一个编译器错误,因为静态导入仅适用于输入字段或成员类型。 (假设MyClass的不是来自showboy内部类或构件)

我觉得你的意思

import static com.showboy.MyClass.*;

这使得在实际编译单元提供MyClass的所有静态字段和成员,而无需限定它们......如上所述



Answer 6:

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中



Answer 7:

假设你有一个类调用内部的静态字段和方法MyClass一个叫包内myPackage ,你想直接通过键入访问它们myStaticFieldmyStaticMethod不键入每次MyClass.myStaticFieldMyClass.myStaticMethod

注意:你需要做的import myPackage.MyClassmyPackage.*用于访问其他资源



Answer 8:

static后修改import是用于检索/使用类的静态字段。 在我使用的一个领域import static是从类检索的常量。 我们也可以申请import static的静态方法。 确保键入import static ,因为static import是错误的。

什么是static import Java中- JavaRevisited -一个很好的资源更多地了解import static



文章来源: What does the “static” modifier after “import” mean?