在Java-"无法导入默认包的静态成员" - 有人可以解释这个语句吗?

Moh*_*lla 12 java import static

在Java-"无法导入默认包的静态成员" - 有人可以解释这个语句吗?如果它有一个例子会更好.我不确定它是否有一个非常简单的答案,但后来我试图理解,但无法弄明白.

Kal*_*see 20

这意味着,如果一个类在默认包中定义(这意味着它不会任何包定义),那么你就不能导入它的另一个类的静态方法.所以下面的代码不起作用:

// Example1.java
public class Example1 {
  public static void example1() {
    System.out.println("Example1");
  }
}

// Example2.java
import static Example1.*; // THIS IMPORT FAILS
public class Example2 {
  public static void main(String... args) {
    example1();
  }
} 
Run Code Online (Sandbox Code Playgroud)

导入失败,因为您无法从默认包中的类导入静态方法,这是Example1的情况.实际上,您甚至无法使用非静态导入.

这个错误报告讨论了为什么Java以这种方式行事,它最终被关闭为"不是缺陷" - 这就是Java的行为方式.默认包只是有一些意想不到的行为,这是鼓励程序员从不使用默认包的原因之一.