父对象属性怎么统一处理?
有个父类对象User(name,age)子对象:UserA(a)子对象:UserB(b)需要在不同场景处理A和B中 User对象共有的属性,这个有什么办法和思路吗?A和B对象中的a、b属性是有值的
回复
1个回答

test
2024-07-14
“使用同一个方法,处理不同对象相同属性”所以方法的参数,应该包括:
- 多个对象
- 相同属性的处理方法
- 处理需要的参数
void oneToMany(List<T> objs, String propMethod, String [] args)
然后为了一次调用,多处运行,这里需要几个前提
- 所有的对象都继承了同一个父类
- 需要执行的处理方法, 方法定义在父类,保证每个对象都有此方法(具体实现可以在子类)
public abstract class User{
public void modifyProp(String args);
}
public class UserA extends User{
public void modifyProp(String args){
this.name = "UserA:"+name;
}
}
public class UserB extends User{
public void modifyProp(String args){
this.name = "UserB:"+name;
}
}
然后我们借助反射,实现oneToMany中循环调用每个对象的propMethod方法
public void oneToMany(List<User> objs, String propMethod, String args){
for(User user : objs){
try {
User.class.getMethod(propMethod).invoke(user,args);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
试试使用
public static void main(String []args){
UserA userOne = new UserA();
UserB userTwo = new UserB();
List<User> users = new ArrayList();
users.add(userOne);
users.add(userTwo);
oneToMany(users, "modifyProp", "nameString")
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容