“导入”后面的“静态”修饰符是什么意思?

2022-08-31 04:27:37

当这样使用时:

import static com.showboy.Myclass;

public class Anotherclass{}

和 有什么区别?import static com.showboy.Myclassimport com.showboy.Myclass


答案 1

查看文档

静态进口申报类似于普通进口申报。普通导入声明从包导入类,允许在没有包限定的情况下使用它们,静态导入声明从类中导入静态成员,允许在没有类限定的情况下使用它们。

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


答案 2

您声明的这两个导入之间没有区别。但是,您可以使用静态导入来允许对其他类的静态成员进行非限定访问。我曾经必须这样做的地方:

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

我可以这样做:

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

您可以在文档中看到更多信息。


推荐