使用说明
使用时,要留意Object数组中值的顺序,需要与目标实体类中构造方法的形参的顺序保持一致,防止出现赋值错误的情况。
工具类代码
/**
* 数据类型转换工具类
* @author xupeng
*/
public class DataConvertUtil {
/**
* Object[] 转 Java Bean
* @param objectArray 原数组
* @param clazz 目标 Bean
* @param <T>
* @return
*/
public static <T> T objectArrayToBean(Object[] objectArray, Class<T> clazz) throws Exception {
if (objectArray == null || objectArray.length == 0){
return null;
}
Class<?>[] tClass = null;
Constructor<?>[] constructors = clazz.getConstructors();
for (int i = 0; i < constructors.length; i++){
Constructor<?> constructor = constructors[i];
Class<?>[] parameterTypes = constructor.getParameterTypes();
if (parameterTypes.length == objectArray.length){
tClass = parameterTypes;
break;
}
}
return clazz.getConstructor(tClass).newInstance(objectArray);
}
}
测试代码
准备一个实体类
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString
public class Student {
private Long id;
private String name;
}
main方法调用
public static void main(String[] args) throws Exception {
Object [] a = new Object[]{1L,"张三"};
Student student = DataConvertUtil.objectArrayToBean(a, Student.class);
if (student != null){
System.out.println(student);
}
}
标签:Java,对象,Object,clazz,length,数组,objectArray,null,public From: https://www.cnblogs.com/mask-xiexie/p/16858586.html