对于学校项目,我们已经在其中一个类中提供了代码
public class Outer{
private enum Inner{
NORTH,
SOUTH,
EAST,
WEST;
}
}
我们还没有被教过如何使用它,因为它是自学的延伸。 所以我想知道如何得到例如" NORTH"作为一个内部对象,然后我可以声明为
Inner i = ?
非常感谢,希望这是有道理的。
答案 0 :(得分:3)
由于您的枚举标记为private
,因此您只能在课程outer
内访问它。您只需使用以下命令即可完成此操作:
Inner i = Inner.EAST;
但我认为你的问题是关于如何从课外访问这个枚举。
您必须将其访问修饰符更改为public
,然后您可以在其他类中使用它:
Outer.Inner i = Outer.Inner.EAST;
答案 1 :(得分:0)
您可以 - 故意 - 将NORTH
公开给外部对象,但他们不会对Inner
知之甚少,他们只会知道Enum
可用的正常详细信息(这实际上是相当的)很多,包括所有其他enum
条目。
public static class Outer {
private enum Inner {
NORTH,
SOUTH,
EAST,
WEST;
}
public Enum exposeInner () {
return Inner.NORTH;
}
}
答案 2 :(得分:0)
您可以在一个类中以基本的三种方式使用私有枚举。有些情况下,在类中使用私有枚举。
方法1:enumName.Value。例如。 Inner.NORTH
方法2(特殊情况):如果您在switch语句中并且enum变量用作选择器,则可以直接使用不带枚举名称的值。例如。案例NORTH:
方法3: 您可以使用values方法获取包含枚举的所有值的数组。例如。 (对于第一个元素):Inner.values()[0]
public class Outer{
private enum Inner{
NORTH,
SOUTH,
EAST,
WEST;
}
public static void main(String[] args) {
Inner i = Inner.NORTH;
System.out.println("i = " + i + "\n");
System.out.print("Switch Statement: \n" +
"i = ");
switch(i) {
case NORTH:
System.out.println(Inner.NORTH);
break;
case SOUTH:
System.out.println(Inner.SOUTH);
case EAST:
System.out.println(Inner.EAST);
case WEST:
System.out.println(Inner.WEST);
default:
System.out.println(i);
}
System.out.println("\nUsing values method: ");
for (Inner value : Inner.values())
System.out.println("value = " + value);
System.out.println("value of first element in the arra = " + Inner.values()[0]);
}
}