gpt4 book ai didi

Java 迭代类字段以创建其他类

转载 作者:行者123 更新时间:2023-12-02 19:33:08 25 4
gpt4 key购买 nike

我有一堂这样的课:

public class Example {
private String a;
private Integer b;
private Boolean c;
private List<AnotherClass> d;
}

我想将其转换为这样的内容:

[
{
name: "a",
value: "a value"
},
{
name: "b",
value: "1",
},
{
name: "c",
value: "true",
}
]

所以,我创建了一个这样的类:

public class Test {
private String name;
private String value;
}

我想要一个方法来迭代 Example 类,这样它将生成 Test 类,而不包含 d 属性。如何实现这一目标?

最佳答案

您可以使用 reflection 轻松完成此操作。在下面的示例中,我将类重命名为 TestProperty因为它代表一个键值对。如果您对使用任何内容感到满意toString()返回作为字段的值,那么解决方案非常简单:

public class Property {
private final String name;
private final String value;

public Property(String name, String value) {
this.name = name;
this.value = value;
}

public static List<Property> toProperties(Object object, String... fieldNames)
throws ReflectiveOperationException
{
ArrayList<Property> properties = new ArrayList<>();
for( String fieldName : fieldNames ) {
Field field = object.getClass().getDeclaredField(fieldName);
properties.add(new Property(fieldName, field.get(object).toString()));
}
return properties;
}

public String toString() {
return String.format("%s: \"%s\"", name, value);
}
}

此示例要求您明确指定所需字段的名称,例如:

List<Property> properties = Property.toProperties(myExample, "a", "b", "c");

如果您希望根据某些标准自动检测字段(例如所有原始字段和 String 类型字段,那么您可以在 toProperties 中添加此逻辑并摆脱可变参数。

关于Java 迭代类字段以创建其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58840617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com