导入和静态导入之间的区别?

问题描述 投票:4回答:2

普通import语句和静态import语句之间有什么真正的(i.s. practical)区别?

import static java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   out.println("Hello");
   out.println("Java");  

 }   
}  

import java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   System.out.println("Hello"); 
   System.out.println("Java");  

 }   
}  
import static
2个回答
4
投票

从java 5开始,引入了静态导入。实际上,“import static”用于减少击键次数,这意味着您不需要为要使用的静态成员编写类名。

在你的例子中,使用import static java.lang.System.*你只需要编写out.println("Hello");,而通常你必须编写System.out.println("Hello");,即每次我们需要调用它的静态成员(out)时我们必须编写类名(System)。


1
投票

除了@ venkatesh的回答之外,值得指出关于何时应该使用静态导入的javadoc文档?

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

© www.soinside.com 2019 - 2024. All rights reserved.