gpt4 book ai didi

java - 是否可以在 Java 枚举中使用上层范围对象?

转载 作者:行者123 更新时间:2023-12-01 16:37:49 25 4
gpt4 key购买 nike

获得枚举的第一类:

public class EnumTest {

private Employee empl;

public EnumTest(Employee empl) {
this.empl = empl;
}

public enum ALL_STRING {

FNAME(empl.getFirstName()),
LNAME(empl.getLastName()),
POSITION(empl.getPosition());
String str;

ALL_STRING(String inStr) {
str = inStr;
}

public String getStr() {
return str;
}
}
}

员工类别:

public class Employee {

private String firstName;
private String lastName;
private String position;

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getPosition() {
return position;
}

public void setPosition(String position) {
this.position = position;
}
}

当我尝试编译它时,出现错误,

/home/shamal/src/Test/src/test/EnumTest.java:21:无法从静态上下文 FNAME (empl.getFirstName()) 引用非静态变量 empl,

/home/shamal/src/Test/src/test/EnumTest.java:22:无法从静态上下文 LNAME (empl.getLastName()) 引用非静态变量 empl,

/home/shamal/src/Test/src/test/EnumTest.java:23:无法从静态上下文 POSITION (empl.getPosition()) 引用非静态变量 empl;

3 个错误

代码中有什么错误以及正确的方法是什么?

谢谢。

最佳答案

枚举是静态(编译时)定义的唯一对象,因此您无法使用动态参数创建它们的值。

直接的问题是您尝试使用非静态成员变量实例化枚举,因此在实例化类本身时不可用 - 它只会在创建新的类对象时初始化。但是,所有枚举值都必须在初始化封闭类时完全初始化。

很难看出您实际上想用这段代码实现什么 - 也许如果您用文字解释它,我们可以提供更好的替代方法。

关于java - 是否可以在 Java 枚举中使用上层范围对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7352981/

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