编写利用Java反射机制完成数据装载器DataLoader.java
时间: 2024-03-01 21:51:57 浏览: 80
DataLoader.py_torch数据_.DataLoader数据加载器_
好的,以下是一个简单的利用 Java 反射机制完成数据装载器 DataLoader.java 的示例代码:
```java
import java.lang.reflect.Field;
import java.util.List;
public class DataLoader {
public static <T> void load(List<T> list, String[] data, Class<T> clazz) {
try {
for (String line : data) {
T obj = clazz.newInstance();
String[] fields = line.split(",");
for (int i = 0; i < fields.length; i++) {
Field field = clazz.getDeclaredField("field" + i);
field.setAccessible(true);
if (field.getType() == int.class) {
field.set(obj, Integer.parseInt(fields[i]));
} else if (field.getType() == String.class) {
field.set(obj, fields[i]);
}
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这个类定义了一个静态方法 load,用于完成数据装载的操作。这个方法接受三个参数:一个 List 对象,一个 String 类型的数组,以及一个 Class 对象,表示要装载的数据类型。
在方法内部,首先遍历传入的数据数组,循环创建数据类型的对象。然后,通过反射获取对象的每个属性,根据属性类型进行类型转换并设置属性值。最后将对象添加到列表中。
需要注意的是,这个方法假设要装载的数据类型中只包含 int 和 String 两种类型的属性,并且属性名称按照 field0、field1、field2 等顺序命名。
使用时,可以调用这个方法,并传入需要装载的数据列表、数据数组和数据类型,例如:
```java
List<Student> students = new ArrayList<>();
String[] data = {"Alice,18,Female", "Bob,19,Male", "Cathy,20,Female"};
DataLoader.load(students, data, Student.class);
```
这样就可以使用反射机制完成数据装载的操作了。
阅读全文