从方法的功能推测,T
应该是一个具体的 Java Bean 类型,用于将 List<JSONObject>
中的数据转换为 List<T>
。以下为你详细介绍如何传递泛型 T
以及如何实现该方法。
java
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
// 定义一个通用的转换方法
public class GenericConverter {
public static <T> List<T> convertParamsBean(Class<T> clazz, List<JSONObject> jsonObjectList) {
List<T> resultList = new ArrayList<>();
for (JSONObject jsonObject : jsonObjectList) {
try {
// 使用 FastJSON 将 JSONObject 转换为指定类型的对象
T instance = JSONObject.toJavaObject(jsonObject, clazz);
resultList.add(instance);
} catch (Exception e) {
e.printStackTrace();
}
}
return resultList;
}
}
// 定义一个示例 Bean 类
class ExampleBean {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "ExampleBean{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
List<JSONObject> jsonObjectList = new ArrayList<>();
// 创建示例 JSONObject
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "Alice");
jsonObject1.put("age", 25);
jsonObjectList.add(jsonObject1);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "Bob");
jsonObject2.put("age", 30);
jsonObjectList.add(jsonObject2);
// 调用转换方法,传递 ExampleBean 类的 Class 对象
List<ExampleBean> exampleBeanList = GenericConverter.convertParamsBean(ExampleBean.class, jsonObjectList);
// 打印转换后的结果
for (ExampleBean bean : exampleBeanList) {
System.out.println(bean);
}
}
}
代码解释
convertParamsBean
方法:
- 该方法使用了泛型
<T>
,接收一个Class<T>
类型的参数clazz
和一个List<JSONObject>
类型的参数jsonObjectList
。 - 遍历
jsonObjectList
,使用JSONObject.toJavaObject
方法将每个JSONObject
转换为clazz
所代表的类型的对象。 - 将转换后的对象添加到
resultList
中,并最终返回该列表。
ExampleBean
类:
这是一个示例的 Java Bean 类,包含 name
和 age
两个属性,以及对应的 getter
和 setter
方法。
Main
类的 main
方法:
- 创建一个
List<JSONObject>
并添加两个示例JSONObject
。 - 调用
GenericConverter.convertParamsBean
方法,传递ExampleBean.class
作为clazz
参数,将List<JSONObject>
转换为List<ExampleBean>
。 - 遍历并打印转换后的
List<ExampleBean>
。
传递泛型 T
的方式
在调用 convertParamsBean
方法时,需要传递具体的 Java Bean 类的 Class
对象,例如 ExampleBean.class
。这样,方法内部就可以使用这个 Class
对象来创建相应类型的实例,并将 JSONObject
中的数据填充到实例中。
注意事项
- 要确保使用的 JSON 处理库(如 FastJSON)已经正确添加到项目依赖中。
- 目标 Java Bean 类必须有默认的无参构造函数,因为
toJavaObject
方法会使用反射创建对象。 - 如果
JSONObject
中的字段名与 Java Bean 类的属性名不匹配,可能需要进行额外的配置或处理。