参数为Class的泛型方法
public static <T> List<T> getObj(Class<T> clazz) throws Exception {
Field[] declaredFields = clazz.getDeclaredFields();
Object[][] objects = new Object[][]{{"套餐A",99,"王五"},{"套餐B",98,"李四"}};
List<T> ts = new ArrayList<>();
for (int j = 0; j < objects.length; j++) {
T t = clazz.newInstance();
for (int i = 0; i < declaredFields.length; i++) {
char[] charName = declaredFields[i].getName().toCharArray();
charName[0] -= 32;
String methodName = "set" + String.valueOf(charName);
Class type = (Class) declaredFields[i].getGenericType();
Method method = clazz.getMethod(methodName, type);
method.invoke(t, objects[j][i]);
}
ts.add(t);
}
return ts;
}
调用
public static void main(String[] args) {
try {
List<Order> obj = getObj(Order.class);
System.out.println(obj);
} catch (Exception e) {
if(e instanceof IllegalArgumentException){
System.out.println("类型不匹配");
}
e.printStackTrace();
}
}
实体类
@Data
public class Order {
private String orderName;
private int orderPrice;
private String consumer;
}