[英]How can I access an inner class?
对于一个学校项目,我们在其中一个类中提供了如下代码:
public class Outer{
private enum Inner{
NORTH,
SOUTH,
EAST,
WEST;
}
}
我们还没有教过如何使用它,因为它是自学的扩展。 所以我想知道如何获取“ NORTH”作为内部对象,然后可以将其声明为
Inner i = ?
非常感谢,希望这是有道理的。
因为您的枚举被标记为private
您只能从outer
类访问它。 您只需使用以下方法即可:
Inner i = Inner.EAST;
但是我认为您的问题是关于如何从课堂之外访问此枚举。 您必须将其访问修饰符更改为public
,然后才能在其他类中使用它,如下所示:
Outer.Inner i = Outer.Inner.EAST;
您可以-故意-将NORTH
暴露给外部对象,但他们对Inner
了解不多,他们只知道Enum
可用的常规细节(实际上很多,并且包括所有其他enum
项)。
public static class Outer {
private enum Inner {
NORTH,
SOUTH,
EAST,
WEST;
}
public Enum exposeInner () {
return Inner.NORTH;
}
}
您可以在类内以三种基本方式使用私有枚举。 在某些情况下,在类内使用私有枚举。
方法1:enumName.Value。 内在北方
方法2(特殊情况):如果您在switch语句中,并且使用enum变量作为选择器,则可以直接使用不带enum名称的值。 例如北:
方法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]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.