java如何使实体类下所有list变量都走一遍公共方法,方法入参是List<T>,给一个demo
时间: 2024-03-28 17:42:42 浏览: 51
可以使用Java的反射机制,在实体类中遍历所有的List类型字段,并对其进行操作。
例如,假设有一个实体类User,其中有两个List类型字段:List<Address> addresses和List<Phone> phones。现在要对这两个List字段中的每个元素进行一个公共方法的调用,方法入参为Object类型。
可以使用以下代码实现:
```java
import java.lang.reflect.Field;
import java.util.List;
public class User {
private List<Address> addresses;
private List<Phone> phones;
public void invokeMethod(Object param) throws IllegalAccessException {
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
if (List.class.isAssignableFrom(field.getType())) {
field.setAccessible(true);
List<Object> list = (List<Object>) field.get(this);
if (list != null) {
for (Object obj : list) {
obj.getClass().getMethod("commonMethod", Object.class)
.invoke(obj, param);
}
}
}
}
}
}
class Address {
public void commonMethod(Object param) {
System.out.println("Address: " + param);
}
}
class Phone {
public void commonMethod(Object param) {
System.out.println("Phone: " + param);
}
}
```
上述代码中,invokeMethod方法就是遍历实体类User中的所有字段,如果该字段是List类型,则对其进行操作。操作的具体实现是通过反射获取List中的每个元素,然后调用其commonMethod方法,方法入参为param。
这样,当调用User类的invokeMethod方法时,就会对User类中所有的List字段执行commonMethod方法了。
阅读全文