Java 如何访问内部类?
对于一个学校项目,我们在其中一个类中提供了如下代码Java 如何访问内部类?,java,Java,对于一个学校项目,我们在其中一个类中提供了如下代码 public class Outer{ private enum Inner{ NORTH, SOUTH, EAST, WEST; } } 我们还没有被教会如何使用它,因为它是自我学习的延伸。 所以我想知道如何得到,比如“NORTH”作为一个内部对象,然后我可以声明为 Inner i = ? 非常感谢,希望这是有意义的。由于您的枚举标记为私有,您只能从类外部访问它。您只需使用以下方法: Inner
public class Outer{
private enum Inner{
NORTH,
SOUTH,
EAST,
WEST;
}
}
我们还没有被教会如何使用它,因为它是自我学习的延伸。
所以我想知道如何得到,比如“NORTH”作为一个内部对象,然后我可以声明为
Inner i = ?
非常感谢,希望这是有意义的。由于您的枚举标记为
私有
,您只能从类外部
访问它。您只需使用以下方法:
Inner i = Inner.EAST;
但我认为你的问题是如何从类外访问此枚举。
您必须将其访问修饰符更改为public
,然后您可以在其他类中使用它,例如:
Outer.Inner i = Outer.Inner.EAST;
您可以有意地将
NORTH
暴露给外部对象,但他们对内部的了解不多,他们只知道枚举
可用的常规细节(实际上这相当多,包括所有其他枚举
条目)
在一个类中,可以通过三种基本方式使用私有枚举。在某些情况下,类内部会使用私有枚举
方法1:enumName.Value。例如,内、北
方法2(特殊情况):如果您在switch语句中,并且使用enum变量作为选择器,则可以直接使用不带enum name的值。例如,case NORTH:
方法3:
可以使用values方法获取包含枚举的所有值的数组。例如(对于第一个元素):Inner.values()[0]
完整代码如下所示:
internal i=internal.NORTH
非常感谢,如果我试图从另一个类中使用它呢?(即不是从外部)谢谢你不能-它被标记为private
,因此只能在Outer
中访问。不,它不是一个内部类的原因是枚举成员是隐式静态的。尽管如此,访问修饰符必须是public
。@chrylis当时不是仍然是一个内部类,只是一个静态的内部类?@1337它是一个嵌套类。内部类是非静态嵌套类。@chrylis-Ah,这就是定义。谢谢你澄清:)
public static class Outer {
private enum Inner {
NORTH,
SOUTH,
EAST,
WEST;
}
public Enum exposeInner () {
return Inner.NORTH;
}
}
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]);
}
}