Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 外部枚举类是隐式静态的吗?_Java - Fatal编程技术网

Java 外部枚举类是隐式静态的吗?

Java 外部枚举类是隐式静态的吗?,java,Java,在阅读有关枚举的信息时。我是通过邮局来的, 其中外部枚举隐式回答为静态 我创建了一个枚举,当我检查字节码时,枚举是最终的,但不是静态的 final class practice.Enums extends java.lang.Enum<practice.Enums> { public static final practice.Enums FRIEND; static {}; Code: 0: new #1

在阅读有关枚举的信息时。我是通过邮局来的, 其中外部枚举隐式回答为静态

我创建了一个枚举,当我检查字节码时,枚举是最终的,但不是静态的

final class practice.Enums extends java.lang.Enum<practice.Enums> {
  public static final practice.Enums FRIEND;

  static {};
    Code:
       0: new           #1                  // class practice/Enums
       3: dup
       4: ldc           #12                 // String FRIEND
       6: iconst_0
       7: invokespecial #13                 // Method "<init>":(Ljava/lang/String;I)V
      10: putstatic     #17                 // Field FRIEND:Lpractice/Enums;
      13: iconst_1
      14: anewarray     #1                  // class practice/Enums
      17: dup
      18: iconst_0
      19: getstatic     #17                 // Field FRIEND:Lpractice/Enums;
      22: aastore
      23: putstatic     #19                 // Field ENUM$VALUES:[Lpractice/Enums;
      26: return

  public static practice.Enums[] values();
    Code:
       0: getstatic     #19                 // Field ENUM$VALUES:[Lpractice/Enums;
       3: dup
       4: astore_0
       5: iconst_0
       6: aload_0
       7: arraylength
       8: dup
       9: istore_1
      10: anewarray     #1                  // class practice/Enums
      13: dup
      14: astore_2
      15: iconst_0
      16: iload_1
      17: invokestatic  #27                 // Method java/lang/System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
      20: aload_2
      21: areturn

  public static practice.Enums valueOf(java.lang.String);
    Code:
       0: ldc           #1                  // class practice/Enums
       2: aload_0
       3: invokestatic  #35                 // Method java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
       6: checkcast     #1                  // class practice/Enums
       9: areturn
}
final class practice.Enums扩展了java.lang.Enum{
公共静态最终实践。枚举朋友;
静态{};
代码:
0:新#1//课堂练习/列举
3:dup
4:ldc#12//String FRIEND
6:iconst_0
7:invokespecial#13//Method“”:(Ljava/lang/String;I)V
10:putstatic#17//Field-FRIEND:lpracce/Enums;
13:iconst_1
14:anewarray#1//课堂练习/列举
17:dup
18:iconst_0
19:getstatic#17//Field-FRIEND:lpracce/Enums;
22:aastore
23:putstatic#19//字段ENUM$值:[lpracce/Enums;
26:返回
公共静态实践。枚举[]值();
代码:
0:getstatic#19//字段枚举$VALUES:[Lpractice/Enums;
3:dup
4:astore_0
5:iconst_0
6:aload_0
7:排列长度
8:dup
9:istore_1
10:anewarray#1//课堂练习/列举
13:dup
14:astore_2
15:iconst_0
16:iload_1
17:invokestatic#27//Method java/lang/System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
20:aload_2
21:轮到你了
public static practice.Enums valueOf(java.lang.String);
代码:
0:ldc#1//课堂练习/列举
2:aload_0
3:invokestatic#35//方法java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
6:checkcast#1//课堂练习/列举
9:轮到你了
}

请帮助我理解如果外部枚举是静态的,为什么它们不以字节码声明?

类本身不是静态的,但所有枚举成员都固有地声明为public、static和final

有关如何模拟静态类的信息,请参见