当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《"导入"后的"静态"修饰符是什么意思?》经验,为你挑选了6个好方法。

当像这样使用时:

import static com.showboy.Myclass;

public class Anotherclass{}

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



1> xsl..:

见文档

静态导入声明类似于正常的导入声明.如果正常的导入声明从包中导入类,允许它们在没有包限定的情况下使用,静态导入声明从类中导入静态成员,允许它们在没有类限定的情况下使用.

那么什么时候应该使用静态导入?非常谨慎!只有在您试图声明常量的本地副本或滥用继承(Constant Interface Antipattern)时才使用它.换句话说,当您需要频繁访问来自一个或两个类的静态成员时,请使用它.如果过度使用静态导入功能,它可能会使您的程序无法读取且无法维护,并使用您导入的所有静态成员污染其命名空间.您的代码的读者(包括您,在您编写它几个月后)将不知道静态成员来自哪个类.从类中导入所有静态成员对可读性特别有害; 如果您只需要一个或两个成员,请单独导入它们.适当使用,静态导入可以使您的程序更具可读性,


我完全同意@xsl上面的警告.其中一个非常有用的区域是junit的Assert:_import static org.junit.Assert.*_用于所有单元测试.
- 用于控制粘贴很长时间而不是非常引人注目的文档文件,而不是编写简单的解释.

2> Victor..:

您声明的这两种进口产品没有区别.但是,您可以使用静态导入来允许对其他类的静态成员进行非限定访问.以前我必须这样做:

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

我可以做这个:

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



3> Nicolas..:

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

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用于类的静态成员.



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

注意:静态导入会使您的代码难以阅读.


在没有星号的情况下编写`import static java.lang.Math`是否意味着什么?

5> user85421..:

"import static com.showboy.Myclass"和"import com.showboy.Myclass"之间的区别?

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

我想你的意思

import static com.showboy.MyClass.*;

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



6> roottravelle..:

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中的静态导入是什么

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有