2013-09-12 3 views
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); 
} 

EventAttorneyModel Классы и CaseAttorneyModel являются JPA сущности и не имеют общих предшественников за Object класса, за исключением.

Интересно, есть ли способ избавиться от дублирования кода, поскольку в будущем будет много таких методов?

+1

Есть ли реасо n у них нет общего родителя или интерфейса? –

+0

Если бы оба класса реализовали один и тот же интерфейс, это было бы очень легко сделать. – Marcelo

ответ

2

Я думаю, что лучше всего было бы создать интерфейс

interface AttorneyModel{ 

    public void setSequence(Long l); 

} 

и сделать 2 классы реализуют их и имеют подписи метода, такие как

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

Это путь, имо. И повторите его для всех других наборов классов. –

+1

Нет необходимости в генериках. Просто используйте AttorneyModel как тип. –

+0

извините .. спасибо @RobertHarvey – sanbhat

Смежные вопросы