【问题标题】:imports of files missing in the class file类文件中缺少的文件的导入
【发布时间】:2020-03-06 06:34:33
【问题描述】:

我正在使用来自另一个接口的某些static 变量,因此我在我的类中导入了这个接口。但是,在我的 Java 类的 .class 文件中没有看到这个 import。但是,可以看到其他非static 成员的导入。这是预期的行为吗?如果是,那为什么?

【问题讨论】:

  • 你能发布你的类的例子吗,你的静态变量也是最终的吗?

标签: java static


【解决方案1】:

导入永远不会在 .class 文件中编码,它们是纯粹的语法糖,以避免在 Java 源代码中为类和/或成员使用全名。类文件不知道您是使用 import package.AClass 还是仅在源文件中通过其全名引用 package.AClass

您可能会看到,在您的课程中根本找不到对您导入字段的引用,这可能是由于以下两个原因之一:

  • 您导入了类/成员,但从未在其余代码中实际引用它。

    由于导入是语法糖,这意味着您的“真实代码”中不存在对导入事物的引用

  • 您引用了一个包含compile time constant 的静态最终字段,在这种情况下,不会生成对该字段的引用,但会直接内联

    class A {
      public static final String CONSTANT = "foo";
    }
    
    class B {
      private String field = A.CONSTANT;
    }
    

    在这种情况下,B 的类文件将包含值 "foo"no 对类 A 的引用。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2016-04-23
    • 2015-03-18
    • 2014-01-09
    相关资源
    最近更新 更多