我正在为我们公司的客户生成报告。
我有一个抽象类,里面有很多静态final int成员:
public abstract class Customer_ItemIDs {
public static final int item_001 = 34535;
public static final int item_002 = 23455;
public static final int item_003 = 74565;
public static final int item_004 = 83480;
...
public static final int item_122 = 65487;
}
在我生成报告的课堂中,我是这样使用它们的(稍微简化了一点):
int itemID_004;
itemID_004 = Customer_ItemIDs.item_004;
现在要求有了变化。
我需要支持另一个具有完全不同的ItemID的客户,我想把它放在另一个静态类中。项目的名称保持不变,只是值不同。
public abstract class CustomerB_ItemIDs {
public static final int item_001 = 17538;
public static final int item_002 = 56756;
public static final int item_003 = 94445;
public static final int item_004 = 93757;
...
public static final int item_122 = 69483;
}
如何正确地参数化它,而不改变初始化itemID的每一行代码?我不想像这样初始化itemID:
int itemID_004;
if (customer == customerA) {
itemID_004 = CustomerA_itemIDs.item_004;
}
else if (customer == customerB) {
itemID_004 = CustomerB_itemIDs.item_004;
}
我想尽可能少地改变。
1条答案
按热度按时间mspsb9vt1#
我觉得你应该试试Java Reflections:
java.lang.reflect
为了不中断现有类的源代码,我将创建一个方法,它将返回
HashMap
,所有字段的名称为key
,其int值为value
,使用提供的类名作为参数:下面是一个简单的例子,它将打印所有字段的值提供类: