【问题标题】:Enum Class not visible in the same folder level枚举类在同一文件夹级别中不可见
【发布时间】:2020-09-23 12:58:36
【问题描述】:

我正在尝试从一个单独的文件中访问枚举类型,该文件与我尝试从中访问它的类位于同一文件夹级别。

这是两个文件:

数字.java:

public enum Number {
    ONE, TWO, THREE
}

mainClass.java:

public class mainClass {

    private Number numVar;

    mainClass(Number num) {
        numVar = num;
    }
}

但是,mainClass 不能将“Number”识别为有效类型。具体来说,“数字”无法解析为类型。知道为什么吗?

【问题讨论】:

  • 添加有问题的项目结构
  • 当它们都处于根包级别时,它应该可以工作。不好的做法,当然。您应该始终定义一个包(即使是标准的 java 类也有一个包 java.* )。如果您不指定包,则类必须位于源代码树的根文件夹中。

标签: java class enums


【解决方案1】:

Number 是 Java 中的标准类。 您应该重命名您的枚举或通过

引用它
private you_package.Number numVar;

但我建议您重命名 Enum,并且永远不要将任何类/枚举命名为标准类/枚举。这是这个班级的the official documentation

【讨论】:

  • 包的目的是避免类名冲突。我同意 Number 不是最好的名称,但在不同的包中定义,定义相同的类名没有问题。它只会在导入这些类时惹恼用户,但这可能会成为 OP 自己的问题 :)
  • 旁注:这个问题的另一种情况是当人们试图编写一些简单的游戏/模拟并且想知道为什么他们的Character(作为人/玩家/化身)类行为奇怪,因为Java还有自己的java.lang.Character 类对应于char,这会导致命名冲突,因为java.lang 包默认添加到任何类(如隐式import java.lnag.*;
猜你喜欢
  • 2017-12-29
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多