【发布时间】:2019-12-29 11:09:34
【问题描述】:
我需要提供一个搜索属性工厂(作为 OOP 策略原则的一部分)。 我为选择编写了以下枚举:
public enum CompareChoice {
ABS {
public Path compare(Path path1, Path path2) {
return absCompare(path1, path2);
}
},
TYPE {
public Path compare(Path path1, Path path2) {
String type1 = getFileType(path1);
String type2 = getFileType(path2);
int compareValue = type1.compareTo(type2);
if (compareValue == 0) {
return absCompare(path1, path2);
}
if (compareValue > 0) {
return path1;
}
return path2;
}
},
SIZE {
public Path compare(Path path1, Path path2) throws IOException {
Long size1 = Files.size(path1);
Long size2 = Files.size(path2);
int compareValue = size1.compareTo(size2);
if (compareValue == 0) {
return absCompare(path1, path2);
}
if (compareValue > 0) {
return path1;
}
return path2;
}
};
public abstract Path compare(Path path1, Path path2) throws IOException;
}
我面临的问题是我需要支持反向排序(所有三个选项)。
我想以某种方式将boolean 参数传递给compare 的这些实现,但我不知道如何。
任何关于如何通过仍然使用enum 来很好地实现这一点的想法都会非常有帮助!
【问题讨论】:
-
你有什么版本的Java?比 8 新?
-
只有 8 个(不允许在本练习中使用更新版本)
-
没关系,8个就够了。
-
compare方法是如何使用的?你打算如何传递布尔值? -
比较方法用于我实现的自定义排序。我不知道如何传递布尔值,这是我的问题。