gpt4 book ai didi

java - 访问枚举中的静态字段

转载 作者:行者123 更新时间:2023-11-30 06:21:42 25 4
gpt4 key购买 nike

一般来说,我了解到 Java 类中的 static block /初始化在编译期间首先执行。但是尝试访问 enum 中的静态字段给我错误

Cannot refer to the static enum field ExportToReports.Animal.num within an initializer.

静态变量必须已经初始化,为什么会出现这个错误?

public enum Animal{
cat(2), dog(3);
int id, number;
static int num = 5;
Animal(int id)
{
this.id = id;
this.number = Animal.num;
}
}

那么这是否意味着当涉及到枚举静态 block 时不会首先执行?请解释

最佳答案

一个简单的解决方法是将静态字段放在静态内部类中:

enum Foo{
RED,GREEN,BLUE;

private final int value;
private Foo(){
this.value = ++ Bar.heresMyStaticField;
}

static class Bar{
private static int heresMyStaticField;
}
}

您是否应该这样做是一个完全不同的问题。

关于java - 访问枚举中的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com