JAVA中有三种不同类型的对象数组,需要将这三种对象中固定的字段提取并转换成统一的对象数组,帮我写一个工具类
时间: 2024-03-03 16:51:23 浏览: 77
好的,我可以帮你写一个工具类来实现Java中三种不同类型的对象数组中固定的字段提取并转换成统一的对象数组。请参考以下代码:
```java
public class ObjectArrayUtil {
/**
* 将三种不同类型的对象数组中固定的字段提取并转换成统一的对象数组
* @param arr1 第一个对象数组
* @param arr2 第二个对象数组
* @param arr3 第三个对象数组
* @param fieldName 固定的字段名
* @return 统一的对象数组
* @throws NoSuchFieldException 如果对象中没有指定的字段,则抛出该异常
* @throws IllegalAccessException 如果无法访问指定的字段,则抛出该异常
*/
public static Object[] extractFieldFromObjectArrays(Object[] arr1, Object[] arr2, Object[] arr3, String fieldName) throws NoSuchFieldException, IllegalAccessException {
int totalLength = arr1.length + arr2.length + arr3.length;
Object[] unifiedArray = new Object[totalLength];
int count = 0;
for (Object obj : arr1) {
Field field = obj.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
unifiedArray[count++] = field.get(obj);
}
for (Object obj : arr2) {
Field field = obj.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
unifiedArray[count++] = field.get(obj);
}
for (Object obj : arr3) {
Field field = obj.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
unifiedArray[count++] = field.get(obj);
}
return unifiedArray;
}
}
```
使用这个工具类,你可以将三种不同类型的对象数组中固定的字段提取并转换成统一的对象数组,如下所示:
```java
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Teacher {
private String name;
public Teacher(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Person[] personArr = {new Person("Tom"), new Person("Jerry"), new Person("Alice")};
Student[] studentArr = {new Student("Bob"), new Student("Mary"), new Student("John")};
Teacher[] teacherArr = {new Teacher("Lily"), new Teacher("Jack"), new Teacher("Rose")};
Object[] nameArr = ObjectArrayUtil.extractFieldFromObjectArrays(personArr, studentArr, teacherArr, "name");
```
这样,你就可以得到一个包含所有元素的统一对象数组 `nameArr`,其中的元素为所有对象数组中的 `name` 字段。
阅读全文