【发布时间】:2013-06-18 13:32:26
【问题描述】:
我收到了一个工作代码(Java 1.7),它执行以下操作: 将文件中的字符串数组(血液测试名称列表)加载到字符串数组成员中(使用 Properties 和 FileInputStream)。该文件可以更改字符串,但含义保持不变(例如:一个测试可以称为“abc”,而在另一个运行中它称为“zzz”)。我有一个枚举测试名称的枚举类。枚举字符串与输入的字符串不同(因为后者可以改变)。
文件 bloodtest.names 包含:
bloodTestNames=abc;def;123;
代码:
public enum BloodTestNames {
AAA,BBB,CCC;
}
Properties props = new Properties();
FileInputStream fis = new FileInputStream("bloodtest.names");
props.load(fis);
String testName[]=props.getProperty("bloodTestNames").toString().split(";");
现在问题: 问题一: 当我知道测试名称时,我需要返回文件中设置的字符串(例如:为值 BBB 返回“def”)。这样做最好的是什么?
我想出的最好方法是:
return testName[BloodTestNames.BBB.ordinal()]
问题 2:如果 BBB 在编译时未知 - 我如何实现相同的目标?
三点: * 我是 C 的老手,但 Java 的新手。欢迎任何做和不做的事。假设我的 Java 知识为零。 * 我不完全重构是这里需要的。 * 我可能忘记提及重要细节,请询问,我会感觉到缺失的空白
【问题讨论】:
-
鉴于值是从文件中读取的,选项的数量会改变,但枚举值将保持不变。在这种情况下,您不应该枚举。你能告诉我们你为什么选择枚举吗?
-
"(使用 Properties 和 FileInputStream)"
-
@sidgate:枚举的选择是这样的,无论实际字符串是什么,代码都是相同的。你将如何解决这个问题(有或没有枚举)。主要目标是使代码具有可读性和可维护性。
-
@fge: 我用了一个我看到的例子(现在好像找不到了...)
-
@DrorCohen, I owe you one(对于“一”的任何定义)