我有一堆类似实用程序的方法,看起来非常相似,如:
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
类之外没有共同的前任。
我想知道是否有办法摆脱重复代码,因为将来会有很多这样的方法?
答案 0 :(得分:2)
我认为最好的方法是创建一个界面
interface AttorneyModel{
public void setSequence(Long l);
}
并使2个类实现它们,并具有类似
的方法签名public static <T extends AttorneyModel> void addLeadingAttorney(T newAttorney,
List<T> existingAttorneys) {
答案 1 :(得分:0)
看起来你可以创建一个封装两种方法的generic class。
你可以按照下面这篇文章的想法把它变成一个单身课.-