我的问题是我正在处理2个不同的jaxb生成的对象层次结构。这些对象具有相同的名称,99.9%的结构相同,但它们位于不同的包中:
xy.z.fpml.transparency.IdentifiedCurrency
xy.z.fpml.recordkeeping.IdentifiedCurrency
正如您可能想象的那样,我无法修改对象,它们没有任何共同点可以链接到,没有超类或接口等等。
IntelliJ说它是重复的代码,但是我的双手并列。有没有办法做一种接受这两种对象的泛型方法?也许有些反思? (我很抱歉,我可以......)
答案 0 :(得分:1)
如果这些类来自jaxb,那么你可能需要维护它们的源代码,一些XSD或Schema文档,而不是生成的类本身。
如果问题仅出在IDE警告中,那么为此案例添加例外并忘记它们。
答案 1 :(得分:0)
我认为避免代码重复的唯一方法是使用Dozer或BeanUtils来创建对象的deepCopy。
private xy.z.fpml.transparency.IdentifiedCurrency getIdentifiedCurrency(String value) {
xy.z.fpml.transparency.IdentifiedCurrency identifiedCurrency = new IdentifiedCurrency();
identifiedCurrency.setCurrencyScheme(SCHEMA);
identifiedCurrency.setValue(value);
return identifiedCurrency;
}
private xy.z.fpml.recordkeeping.IdentifiedCurrency getIdentifiedCurrency(String value) {
xy.z.fpml.transparency.IdentifiedCurrency currency = getIdentifiedCurrency(value);
xy.z.fpml.recordkeeping.IdentifiedCurrencycurrency copy = new ...();
BeanUtils.copyProperties(currency , copy );
return identifiedCurrency;
}
对于第二层次结构,我将使用另一种方法调用第一层并复制结果。我添加的只是一个简单的例子,它可能看起来有点开销,因为我们有相同数量的行,但有方法重复50-100行,总共有一个完整的层次结构重复。
你认为有更好的方法吗?