我有一堆类似于实用程序的方法,看起来非常相似,例如:

public static void addLeadingAttorney(EventAttorneyModel newAttorney,
                                List<EventAttorneyModel> existingAttorneys) {
    for (EventAttorneyModel existingAttorney : existingAttorneys) {
        existingAttorney.setSequence(existingAttorney.getSequence() + 1);
    }
    newAttorney.setSequence(1L);
    existingAttorneys.add(0, newAttorney);
}


public static void addLeadingAttorney(CaseAttorneyModel newAttorney,
                                List<CaseAttorneyModel> existingAttorneys) {
    for (CaseAttorneyModel existingAttorney : existingAttorneys) {
        existingAttorney.setSequence(existingAttorney.getSequence() + 1);
    }
    newAttorney.setSequence(1L);
    existingAttorneys.add(0, newAttorney);
}


EventAttorneyModelCaseAttorneyModel是JPA实体,除了Object类之外没有其他共同的前身。

我想知道是否有一种方法可以避免重复代码,因为将来会有很多这样的方法?

最佳答案

我认为最好的方法是创建一个界面

interface AttorneyModel{

   public void setSequence(Long l);

}


并让2个类实现它们,并具有如下方法签名

public static <T extends AttorneyModel> void addLeadingAttorney(T newAttorney,
                                List<T> existingAttorneys) {

10-02 03:16