支持代码向后兼容

时间:2019-01-29 17:58:58

标签: java

我有一个模型(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;
    }
}

这是正确的处理方法吗?还有更好的方法吗?

谢谢。

0 个答案:

没有答案