我有一个模型(dto)v1
SampleDto {
instVar1
instVar2
setters / getters
}
此模型将作为一些服务的一部分作为模块部署在jboss中。 我需要调用此模型来构建我的应用程序,并且此模型是我要构建的应用程序的编译时依赖性。
现在,我的应用程序可以在以下情况下向后兼容: 添加了一个新的成员变量,例如instVar3(现在的模型版本为v2); 我的应用程序使用新的模型v2作为编译时间依赖性;如果我的应用程序在运行时在模型v1上运行,如何避免nosuchmethodfound错误。
要处理此问题,我正在使用反射API来检查该SampleDto中是否支持特定的方法/字段,如果支持,则使用其他方法。
final List<Method> methods = new ArrayList<Method>(Arrays.asList(SampleDto.class.getDeclaredMethods()));
for(Method method : methods){
if (method.toString().contains(methodToFind)){
log.debug("method supported at runtime - SampleDto");
SampleDto.newSetter(....);
break;
}
}
这是正确的处理方法吗?还有更好的方法吗?
谢谢。