使用场景
mybatis自动生成基础类,使用继承扩展基础类
class Base {
Integer id;
String str;
getter...
setter...
}
class ExtendBase extends Base{
Long value;
getter...
setter...
}
代码
class ExtendBase extends Base{
Long value;
public ExtendBase(Base base){
Class<Base> baseClass = Base.class;
Class<ExtendBase> extendClass = ExtendBase.class;
Field[] fields = baseClass.getDeclaredFields();
for (Field field : fields) {
try {
Method getter = baseClass.getDeclaredMethod("get" + StringUtils.upperHeadChar(field.getName()));
Object value = getter.invoke(base);
Method setter = extendClass.getMethod("set" + StringUtils.upperHeadChar(field.getName()), value.getClass());
setter.invoke(this, value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
注意
如果子类中有重写父类的方法,则调用setter时是子类重写的方法
class ExtendBase extends Base{
@Override
public void setId(Integer id){
super.setId(id);
this.value = id+1;
}
}