0

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

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

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

4

2 回答 2

2

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

interface AttorneyModel{

   public void setSequence(Long l);

}

并使 2 个类实现它们,并具有类似的方法签名

public static <T extends AttorneyModel> void addLeadingAttorney(T newAttorney,
                                List<T> existingAttorneys) {
于 2013-09-12T17:45:46.243 回答
0

看起来您可以创建一个封装这两种方法的通用类。

您可以按照下面帖子的想法将其设为单例类。-

如何在java中创建一个通用的单例类?

于 2013-09-12T17:44:58.820 回答