我是一名经验丰富的程序员,但对Java不熟悉。我已经定义了一个枚举,但是当我尝试使用它时会得到“未找到符号”。我看了很多答案,他们都指出了命名冲突。我已经重命名了我的枚举,但仍然没有运气。经过进一步研究后,我在Oracle网站上找到了以下示例。 (注意,我打破了命名约定以确保“Day”没有出现命名冲突)
public enum Day__ {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
如示例所示,我尝试以下列方式使用它:
public class EnumTest {
Day__ day;
public EnumTest(Day__ day) {
this.day = day;
}
}
然而在编译时(使用Intellij),我得到以下内容:
Error:(7, 5) java: cannot find symbol
symbol: class Day__
location: class com.islbahamas.firstcontact.client.EnumTest
根据Jon和Janos的建议(我真正建议),我创建了一个全新的项目(TestProject)。在路径C:\ Dev \ TestProject \ src \ com \ islbahamas \ fullyNewPackageInNewProject中我有以下两个文件: Day_OnlyClassDefinedWithThisName.java TestEnum.java
Day_OnlyClassDefinedWithThisName.java如下所示:
package com.islbahamas.completelyNewPackageInNewProject;
/**
* Created by Clyde on 12/7/2014.
*/
public enum Day_OnlyClassDefinedWithThisName {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
和TestEnum.java看起来像这样:
package com.islbahamas.completelyNewPackageInNewProject;
/**
* Created by Clyde on 12/7/2014.
*/
public class TestEnum {
Day_OnlyClassDefinedWithThisName day;
public TestEnum(Day_OnlyClassDefinedWithThisName day) {
this.day = day;
}
}
注意......两个相同的包
错误: 错误:(7,5)java:找不到符号 symbol:class Day_OnlyClassDefinedWithThisName location:class com.islbahamas.completelyNewPackageInNewProject.TestEnum
即使导入(尽管不必要)声明包括(如下所示),我也有同样的错误
package com.islbahamas.completelyNewPackageInNewProject;
import com.islbahamas.completelyNewPackageInNewProject.Day_OnlyClassDefinedWithThisName;
/**
* Created by Clyde on 12/7/2014.
*/
public class TestEnum {
Day_OnlyClassDefinedWithThisName day;
public TestEnum(Day_OnlyClassDefinedWithThisName day) {
this.day = day;
}
}
答案 0 :(得分:0)
如果包含您的枚举和测试类Day__.java
和EnumTest.java
的文件位于同一目录中,那么这应该可行。如果他们在不同的目录中,
然后在EnumTest
中,您需要在顶部附近添加import
语句,其完整包名称为Day__
,例如:
import path.to.Day__;
从错误消息中可以清楚地看到EnumTest
在包com.islbahamas.firstcontact.client
中,并且由于编译器在同一个包中找不到Day__
,这意味着Day__.java
文件必须在别的地方。