我有一个与在 Java 中实现某些东西有关的问题,我猜 Enums 是其中的一部分(或者也许只是我让它们成为问题的一部分。
所以问题是我有一个模型类,可以说它有 3 个字段:
class ConferenceInfo {
String name;
Date date;
String location;
public boolean compareByName(ConferenceInfo other) {
return getName().equals(other.getName());
}
public boolean compareByDate(ConferenceInfo other) {
return getDate().compareTo(other.getDate()) == 0;
}
public boolean compareByLocation(ConferenceInfo other) {
return getLocation().equals(other.getLocation());
}
}
我有一个必须比较的对象对的列表:
List<Pair<ConferenceInfo, ConferenceInfo>>
现在,如果我可以重写一个 equals 方法,这将非常容易,但在这种情况下它有点不同 - 我必须通过它们的字段值比较这些对象并输出它们不同的数量。为此,我创建了一个枚举:
public enum FieldType {
NAME,
DATE,
LOCATION
}
并创建了一个将 FieldType 作为参数并执行以下操作的方法(在我的 Measurement 类中,具有上述对列表):
for (Pair<ConferenceInfo, ConferenceInfo> result : results) {
ConferenceInfo first = result.getFirst();
ConferenceInfo second = result.getSecond();
switch (field) {
case NAME:
if (!first.compareByName(second)) {
differentValues++;
}
break;
case DATE:
if (!first.compareByDate(second)) {
differentValues++;
}
break;
case LOCATION:
if (!first.compareByLocation(second)) {
differentValues++;
}
break;
}
}
它有效,但我想知道我编码它的方式是否是一个好习惯,或者我应该用不同的方式编写它。我有点不喜欢在循环内切换,但也许只是我:)