public <T extends Enum<T>> List<String> getEnumProperties(List<T> enumList, Function<T, String> propertyExtractor) {
List<String> result = new ArrayList<>();
for (T enumObj : enumList) {
result.add(propertyExtractor.apply(enumObj));
}
return result;
}
在上述方法中,我们使用了Java 8 中的 java.util.function.Function
函数接口类型,表示对带有一个参数的输入执行操作后返回一个结果。其中,定义了类型参数 <T extends Enum<T>>
,表示 T 必须是枚举类型。propertyExtractor
参数是一个函数式接口,它接受一个枚举类型的参数 T 并返回一个字符串,用于抽取枚举对象的属性值。在该方法中,我们将枚举对象列表中的每个对象 enumObj
传递给 propertyExtractor
函数来抽取属性值,并将结果添加到结果列表中。
以 Color 枚举类型为例,我们可以按照以下方式调用上述方法来获取 Color 枚举中的 hexCode 属性值:
List<Color> colorList = Arrays.asList(Color.values());
List<String> hexCodeList = getEnumProperties(colorList, Color::getHexCode);
System.out.println(hexCodeList); // 输出: [#FF0000, #00FF00, #0000FF]
个人转换使用:
public static <T extends Enum<T>> String getEnumProperties(List<T> enumList, Function<T, Integer> propertyExtractor,Function<T, String> propertyExtractor2) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < enumList.size(); i++) {
sb.append(propertyExtractor.apply(enumList.get(i))).append("-").append(propertyExtractor2.apply(enumList.get(i)));
if (i != enumList.size() - 1) {
sb.append(",");
}
if ((i + 1) % 4 == 0) {
sb.append("<br>");
}
}
return sb.toString();
}
String s = EnumUtils.getEnumProperties(list, Status::getIndex, Status::getName);