java - 从枚举生成 Java 类
问题描述
我面临下一个问题:
我在 BE 端有属性,可以通过处理程序获取和设置。我使用 enum 来设置属性,并使用 bean class 来获取。现在我需要重复属性名称,我想避免它。
public enum ExampleEnum {
APPLE("_apple"),
PEAR("_pear"),
PINEAPPLE("_pineapple");
private final String name;
ExampleEnum(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
@Data
@With
@AllArgsConstructor
public class EnumBean {
@SerializedName("_apple")
String apple;
@SerializedName("_pear")
String pear;
@SerializedName("_pineapple")
String pineapple;
}
public interface PropertiesService {
EnumBean getPropertiesViaBE();
void setPropertyViaBE(ExampleEnum property, String value);
}
现在我必须支持这些类之间的两种方式的一致性。
解决方案
我不确定这是你想要达到的,但我猜:
您想要返回一个 json 对象,该对象基本上包含name
属性到枚举名称的映射,例如:
{
"_apple": "APPLE",
"_pear": "PEAR",
"_pineapple":"PINEAPPLE"
}
在旁注中,我不确定您为什么需要它作为一个简单的列表可能足以获得可用的枚举,但也许我猜错了,您需要添加更多信息。无论如何,您都可以在以下基础上进行构建。
要生成像上面这样的 json 字符串,您不需要 POJO。大多数 json 生成器和解析器都支持泛型类型,例如映射和集合。因此,您可以构建一个地图:
Map<String, String> map = Arrays.stream(ExampleEnum.values())
.collect(Collectors.toMap(e -> e.getName(),
e -> e.name()));
然后只需将该映射序列化为 json,您应该会得到一个类似上面的字符串。
推荐阅读
- python - 我可以使用熊猫从 2d 数组中获取 3d 数组吗?
- big-o - 多变量大 O 分析
- python - 来自 pandas 数据框的 multiindex 的日期索引
- ffmpeg - 添加图像后如何将视频编解码器保持为原始编解码器?
- python - 创建 scikit-learn 贡献包
- c# - 生成 excel 清除 viewbag/tempdata
- django - 无法在 django 中使用反向 url 功能
- python - 从 WAV 文件中绘制正弦曲线
- vbscript - ADODB 记录集无法从 SQL 数据库中提取“XMLData”(xml 格式数据)
- go - gRPC 可以集成到 Flutter-web 中吗?