Java根据list中的属性名称动态创建对象示例
时间: 2023-08-06 12:04:41 浏览: 78
假设我们有一个User类:
```java
public class User {
private String name;
private int age;
// 构造函数和getter/setter方法省略
}
```
现在有一个List<String>,包含了要创建的对象的属性名称和对应的属性值,例如:
```java
List<String> properties = new ArrayList<>();
properties.add("name:张三");
properties.add("age:18");
```
我们可以通过以下代码根据属性名称动态创建User对象:
```java
Class<?> clazz = Class.forName("com.example.User");
Object obj = clazz.newInstance();
for (String property : properties) {
String[] pair = property.split(":");
String fieldName = pair[0];
String fieldValue = pair[1];
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
if (field.getType() == int.class) {
field.set(obj, Integer.parseInt(fieldValue));
} else {
field.set(obj, fieldValue);
}
}
User user = (User) obj;
```
上述代码中,我们使用反射机制获取User类的Class对象,然后根据属性名称逐个设置属性值,最后返回创建的User对象。需要注意的是,对于int类型的属性,需要先将属性值转换为int类型再设置属性值。
阅读全文