如何优化使用相同类名的不同包的代码?

xfb7svmp  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(148)

我正在开发一个转换器,它可以将一个数据模型转换为另一个数据模型。具体来说,它是一个hafas模型,api以xml格式向我发送一个hafas响应。它是哪种模型并不重要,但它对该模型的不同版本使用不同的pojo类。
我使用两个版本的hafas(目前),两个版本都有单独的方案,因此我生成的pojo类的构造方式不同。问题是两个版本都不同,但仍然使用相同或相似的类名。读取它们并将其转换为另一个数据模型的算法几乎相同。900多行代码,可能还有几行修改过的代码。
例子
第1版:

public void convertAndInsertHafasLegsInsideTriasTrip(TripStructure myTrip, LegList hafasLegs) {
        for (Leg hafasLeg :
                hafasLegs.getLeg()
        ) {
            TripLegStructure myTripLeg = convertToTriasTripLeg(hafasLeg);

            if (myTripLeg != null)
                myTrip.getTripLeg().add(myTripLeg);
            else
                throw new NullPointerException("ERROR: HAFAS TripResult conversion ended up with NULL object");
        }
    }

第二版:

public void convertAndInsertHafasLegsInsideTriasTrip(TripStructure myTrip, LegList hafasLegs) {
        for (Leg hafasLeg :
                hafasLegs.getLeg()
        ) {
            TripLegStructure myTripLeg = convertToTriasTripLeg(hafasLeg);

            if (myTripLeg != null)
                myTrip.getTripLeg().add(myTripLeg);
            else
                throw new NullPointerException("ERROR: HAFAS TripResult conversion ended up with NULL object");
        }
    }
``` `LegList` 阶级和 `Leg` 转换器的第一个和第二个版本中的类是不同的,因为这两个版本使用不同的pojo类包。所以 `LegList` 及 `Leg` 有不同的 Package 。
我的问题是,我有几十个完全相同的方法,可能有几个不同,因为这两个包中的类名不同。
另一个问题是,例如,如果我必须实现一个转换器,我有另一个版本也类似于这些,我同样必须复制数千行代码。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题