我有以下枚举值。
register1(1, 000),
register2(2, 000),
register3(3, 000),
register4(4, 000);
我想打印括号中的值而不是名称。它们都是int类型。第二个值是由switch语句更新的,这个语句都正常工作但我想得到第二个值的新值而不必单独写出每个值,因此尝试循环通过枚举!
当我尝试
时 for (Registers register: Registers.values()) {
System.out.println(register);
}
打印出“Register1,Register2等”。
public enum Registers {
register1(1, 000),
register2(2, 000),
register3(3, 000),
register4(4, 000);
public int registerNumber;
public int result;
private Registers(int registerNumber, int result) {
this.registerNumber = registerNumber;
this.result = result;
}
public int getRegisterNumber() {
return registerNumber;
}
public int getResult() {
return result;
}
public static Registers getByNumber(int number) {
for (Registers register : values()) {
if (register.registerNumber == number) {
return register;
}
} return null;
}
}
答案 0 :(得分:2)
在枚举中添加getter,返回存储值的字段变量。
public enum Register {
register1(1, 0);
private int field1;
private int field2;
private Register(int field1, int field2) {
this.field1 = field1;
this.field2 = field2;
}
public int getField1() {
return field1;
}
public int getField2() {
return field2;
}
}
答案 1 :(得分:2)
只需为其提供一个访问者并在println()
中调用它,而不是依赖toString()
:
for (Registers register: Registers.values()) {
System.out.println(register.getResult());
}