java 依据字段名反射 将 A类转为B类
时间: 2024-06-03 13:03:28 浏览: 11
在Java中,可以使用反射机制来实现依据字段名将一个类A转换为类B。下面是一个简单的示例代码:
```java
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) throws IllegalAccessException {
A a = new A("John", 25);
B b = new B();
// 获取A类和B类的字段数组
Field[] fieldsA = a.getClass().getDeclaredFields();
Field[] fieldsB = b.getClass().getDeclaredFields();
// 遍历A类的字段数组
for (Field fieldA : fieldsA) {
// 设置字段可访问,以便获取其值
fieldA.setAccessible(true);
// 遍历B类的字段数组
for (Field fieldB : fieldsB) {
// 设置字段可访问,以便设置其值
fieldB.setAccessible(true);
// 如果字段名相同,则将A类的字段值赋给B类的字段
if (fieldA.getName().equals(fieldB.getName())) {
fieldB.set(b, fieldA.get(a));
break;
}
}
}
System.out.println(b.getName()); // 输出:John
System.out.println(b.getAge()); // 输出:25
}
}
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 String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
上述代码中,我们通过反射获取了类A和类B的字段数组,然后遍历类A的字段数组,再遍历类B的字段数组,如果字段名相同,则将类A的字段值赋给类B的字段。最后,我们可以通过类B的getter方法获取转换后的字段值。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)