java 依据字段名反射 将 A类转为B类 泛型方法
时间: 2024-06-03 10:03:28 浏览: 107
在Java中,可以使用反射机制来实现依据字段名将一个类A转换为类B的操作。反射机制允许我们在运行时动态地获取类的信息,并且可以通过字段名来获取和设置字段的值。
下面是一个示例代码,演示了如何使用反射实现将类A转换为类B的操作:
```java
import java.lang.reflect.Field;
public class ReflectionExample {
public static <T, U> U convertClass(T source, Class<U> targetClass) throws Exception {
U target = targetClass.getDeclaredConstructor().newInstance();
Field[] sourceFields = source.getClass().getDeclaredFields();
Field[] targetFields = targetClass.getDeclaredFields();
for (Field sourceField : sourceFields) {
for (Field targetField : targetFields) {
if (sourceField.getName().equals(targetField.getName())) {
sourceField.setAccessible(true);
targetField.setAccessible(true);
targetField.set(target, sourceField.get(source));
break;
}
}
}
return target;
}
public static void main(String[] args) throws Exception {
// 定义类A和类B
class A {
private String name;
private int age;
public A(String name, int age) {
this.name = name;
this.age = age;
}
}
class B {
private String name; private int age;
public B() {}
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;
}
}
// 创建类A的实例
A a = new A("John", 25);
// 将类A转换为类B
B b = convertClass(a, B.class);
// 输出转换后的结果
System.out.println("Name: " + b.getName());
System.out.println("Age: " + b.getAge());
}
}
```
上述代码中,`convertClass`方法使用了泛型,可以接受任意类型的源对象和目标类。它通过反射获取源对象和目标类的字段,并根据字段名进行匹配和赋值操作。
阅读全文