如果無法修改Event接口,如何重構以下方法? PMD報告太複雜,findbugs報告ITC_INHERITANCE_TYPE_CHECKING。還有幻數,如3,4,5等。如何在不能更改接口的情況下重構此方法?
public int getEventCode(Event event) {
if (event instanceof OneEvent) {
return 1;
}
if (event instanceof TwoEvent) {
return 2;
}
if (event instanceof ThreeEvent) {
return 3;
}
if (event instanceof FourEvent) {
return 4;
}
if (event instanceof FiveEvent) {
return 5;
}
if (event instanceof SixEvent) {
return 6;
}
if (event instanceof SevenEvent) {
return 7;
}
if (event instanceof EightEvent) {
return 8;
}
if (event instanceof NineEvent) {
return 9;
}
if (event instanceof TenEvent) {
return 10;
}
return event.getClass().hashCode() + 10;
}
謝謝fge。你的回答非常好,非常有幫助。 – mailzyok
嗨fge,我得到了一個警告:「類型安全:爲<可變參數>創建一個Class <?extends Event的通用數組>」 private static final List> EVENT_CLASSES = Arrays.asList(OneEvent.class,...); 這是一場虛驚,對吧?任何最佳做法,以消除此警告? –
mailzyok
呃,是的,這個警告是一種痛苦......在變量聲明之前放置@SuppressWarnings(「unchecked」)';或者如果你不喜歡它,請使用靜態初始化塊。 – fge