无法访问在Test类之外定义的enum中的值。
如何访问像Reddel,Jonathan,Goldendel等枚举常量
enum Apple{
Reddel,Jonathan,Goldendel,Winesap,Cortland;
}
public class Test{
enum Apple{
Seb,Majj,Dlred,Wipe,Cland;
}
public static void main(String s[]){
//here I want to access enumeration constant from Apple outside Test.
//Apple.Winesap
//Apple.Goldendel
System.out.println(Apple.Winesap);
}
}
如果你在一个包中有你的类,说
package pkg;
则使用pkg.Apple.Winesap
将工作。(另一个Apple
的全限定名为pkg.Test.Apple
)
您还可以从pkg.Apple
静态导入成员:
import static pkg.Apple.*;
,然后使用Winesap
。
如果你使用的是默认包(没有包声明),那么内部的Apple
会遮蔽其他的Apple
,你就不走运了。(静态导入也是如此;不能从默认包中的类中静态导入成员)
相关问题:
- Java内部类遮蔽外部类
- 与其他顶层类同名的Java内部类
应附加包名
您需要指定完整的包路径。下面我测试的代码正在编译:
package com.my.test;
enum Apple{
Reddel,Jonathan,Goldendel,Winesap,Cortland;
}
public class Test{
enum Apple{
Seb,Majj,Dlred,Wipe,Cland;
}
public static void main(String s[]){
//here I want to access enumeration constant from Apple outside Test.
//Apple.Winesap
//Apple.Goldendel
System.out.println(com.my.test.Apple.Winesap);
}
}
枚举在某处声明,想象在ClassName.java
中。您可以使用ClassName.Apple.Reddel
和Test.Apple.Seb
分别引用它们