我有以下类,它使用 switch 语句,我想将其替换为枚举。
public class FillTable {
private static final int NAME_INDEX = 0;
private static final int DESCRIPTION_INDEX = 1;
private static final int CONTRIBUTION_INDEX = 2;
public Object getValueAt(int row, int col) {
EmployeeData employeeData = (EmployeeData)items.get(row);
switch (col) {
case NAME_INDEX: {
return employeeData.getName();
}
case DESCRIPTION_INDEX: {
return employeeData.getDescription();
}
case ADDRESS_INDEX: {
return employeeData.getAddress();
}
default: {
return "";
}
}
}
}
这是我想出的枚举。
public enum EmployeeTableColumn {
NAME_INDEX {
@Override
public void getData() {
employeeData.getName();
}
}, DESCRIPTION_INDEX {
@Override
public void getData() {
return employeeData.getDescription();
}
}, CONTRIBUTION_INDEX {
@Override
public void getData() {
return employeeData.getAddress();
}
};
public abstract void getData();
}
我的问题是我不知道如何替换 getValueAt()
方法中的代码以使用枚举代替 switch 语句。有人可以告诉我如何做到这一点吗?
最佳答案
如果您希望 EmployeeTableColumn
枚举控制如何从 EmployeeData
对象中提取信息,那么您需要在 EmployeeTableColumn
中使用一个方法,该方法采用您的 EmployeeData
作为参数并返回提取的信息。
public enum EmployeeTableColumn {
NAME {
@Override
public Object getData(EmployeeData data) {
return data.getName();
}
},
DESCRIPTION {
@Override
public Object getData(EmployeeData data) {
return data.getDescription();
}
},
CONTRIBUTION {
@Override
public Object getData(EmployeeData data) {
return data.getAddress();
}
};
public abstract Object getData(EmployeeData data);
}
然后您可以编写一个使用 EmployeeTableColumn
来提取正确数据的方法。
public Object getValueAt(int row, int col) {
EmployeeData employeeData = (EmployeeData)items.get(row);
// however you are going to pick the right column object
EmployeeTableColumn employeeColumn = EmployeeTableColumn.values()[col];
return employeeColumn.getData(employeeData);
}
关于java - 尝试用Java中的枚举替换switch语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444148/