【发布时间】:2014-02-14 19:15:55
【问题描述】:
我正在编写一个关于医疗信息的小型项目,在其中,我正在读取来自多个数据源的文本。所有这些文本源都具有相同的类型信息,但标签略有不同。例如,sourceA 有一个标题为“不利影响”的部分,而 sourceB 将其称为“副作用”。
我有一个名为Reader 的接口,以及几个实现该接口的类(AReader、BReader 等)。此外,我为每个班级的章节标题提供了枚举。例如:
enum ASections {
SIDE_EFFECTS ("side effects"),
DOSAGE ("dosage");
private String sectionTitle;
private ASections(String s) { this.sectionTitle = s; }
}
enum BSections {
SIDE_EFFECTS ("adverse effects"),
DOSAGE ("dosage and usage");
private String sectionTitle;
private BSections(String s) { this.sectionTitle = s; }
}
我的项目的核心是一个Orchestrator 类,它使用Reader(实际的源A、B 等由命令行选项指定)。到目前为止一切顺利。
但是,我希望所有实现 Reader 的类也实现方法 getSectionText,其中参数应该是 ASections 或 BSections 或 ...
如何在接口级别指定这样的方法?
这是我的第一次(显然是错误的)尝试:
public String getSectionText(Enum _section_enum);
这个想法是,无论在命令行指定哪个数据源,我都应该能够通过获取适当的节标题来获得所需的类型文本。
【问题讨论】:
-
最简单的事情可能是让你的 enums 实现一个接口,使用一个方法
getSectionText接受任何必要的参数。 -
我不明白返回 sectionText 的内容,你为什么要传递一个枚举?
-
@nachokk :在我的设计中,实现
Reader接口的类有一个映射,它将节标题映射到节正文中的实际文本。我想从标题的确切文本中抽象出来(因为它们可能在多个来源中有所不同,例如“剂量”、“剂量和用法”等)。因此,此映射将枚举(例如ASections.DOSAGE)作为键,将文本作为值。然后我可以通过Reader#getSectionText获取文本。 -
@LouisWasserman:我什至不知道枚举可以实现接口!现在正在调查。