【问题标题】:Unable to do static import无法进行静态导入
【发布时间】:2017-05-01 10:45:32
【问题描述】:

//interface1.java

package package1;
   public interface interface1 {
      static final int a =10;
   }

//StaticImportTest.java

 import static package1.*;         //import package1.*; works

   class StaticImportTest {
      public static void main(String args[]) {
        System.out.println(a);     //System.out.println(interface1.a) works
      }
   }

当我用“import”替换“import static”这个词并使用 System.out.println(interface1.a) 时,它可以工作,但不确定为什么它不能以当前形式工作。

【问题讨论】:

  • 听起来像是 XY 问题。你为什么要让这个奇特的建筑工作?
  • 刚刚尝试使用静态导入,卡住了
  • 不要尝试,而是阅读教程。对于静态导入,.* 之前的限定名必须是限定类名。

标签: java import static-import


【解决方案1】:

为了让您的静态导入按您预期的方式工作,它必须是 import static package1.interface1.*import static package1.interface1.a
静态导入会导入一个类的公共静态成员,要么全部带有 *,要么是特定的成员,例如 a
另一方面,导入从包中导入包或特定类。

您的import static package1.* 将尝试从根包中的package1 类中导入所有成员。

使其成为正常导入并通过interface1.a 访问a 有效,因为导入从package1 导入所有类,包括interface1,因此您可以通过interface1 类访问a

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2011-06-25
    • 2023-04-02
    • 2013-06-30
    相关资源
    最近更新 更多