要定义一个泛型方法,参数是不同的枚举对象list,返回枚举中属性string

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值