请你把上面的方法写成通用的
时间: 2024-03-08 18:49:43 浏览: 75
共通js方法
如果您希望将一个任意类型的对象列表转换为一个字符串键值对的列表,您可以使用 Java 的泛型机制,将字段名称和字段值的类型作为参数传递给方法。以下是通用的转换方法示例:
```java
public static <T> List<Map<String, String>> convertToObjectList(List<T> objectList, String[] fieldNames, Function<T, String>[] valueExtractors) {
List<Map<String, String>> resultList = new ArrayList<>();
for (T object : objectList) {
Map<String, String> map = new HashMap<>();
for (int i = 0; i < fieldNames.length; i++) {
String fieldName = fieldNames[i];
Function<T, String> valueExtractor = valueExtractors[i];
map.put(fieldName, valueExtractor.apply(object));
}
resultList.add(map);
}
return resultList;
}
```
该方法包含三个参数:
- `objectList`:要转换的对象列表。
- `fieldNames`:一个字符串数组,包含要提取的字段名称。
- `valueExtractors`:一个函数数组,包含从对象中提取字段值的函数,函数的输入类型是 `T`,输出类型是 `String`。
例如,如果您有一个 `Person` 类,其中包含 `name` 和 `age` 两个字段,您可以使用以下代码将其转换为一个字符串键值对的列表:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 30));
personList.add(new Person("Bob", 40));
String[] fieldNames = {"name", "age"};
Function<Person, String>[] valueExtractors = new Function[] {
Person::getName,
p -> String.valueOf(p.getAge())
};
List<Map<String, String>> result = convertToObjectList(personList, fieldNames, valueExtractors);
```
这将返回一个 `List<Map<String, String>>` 对象,其中每个 `Map` 对象表示一个 `Person` 对象的字段键值对。
阅读全文