我有兩個枚舉:如何在Java中編寫一個函數來推廣使用具有不同鍵類型的映射參數?
enum Country { US, etc }
enum Language { EN, etc }
我希望能夠寫一個函數,它在地圖中有兩種枚舉的關鍵:
checkMap(new HashMap<Language, Long>());
checkMap(new HashMap<Country, Long>());
我已想出的唯一辦法如何做到這一點有以下幾種:
1. private void checkMap(Map<? extends Enum, Long> mapParam) {...}
2. private <T> void checkMap(Map<T, Long> mapParam) {...}
3. private void checkMap(Map mapParam) {...}
這些都不是對我讓在參數超級特定的(1)做最好通過使枚舉的一些子類,但是很多邏輯複雜化(我在這裏大大簡化了)。 (3)我必須做大量的下游鑄造,而且我覺得這只是一個普遍不好的做法。
我覺得我錯過了一些相當明顯的東西。
我也知道我可以用不同的參數編寫兩個單獨的方法聲明,但是有太多重複的邏輯,我想將該邏輯抽象爲函數並避免重複的代碼。
有兩類完全不相關的,所以你要與要概括的鬥爭邏輯。你可以提供一個例子,說明'checkMap'如何在這兩個不相關的類中統一應用邏輯? –
僅僅因爲你有兩種不同的方法並不意味着你必須重複邏輯。只是使用私人幫手的方法來處理常見的東西。 –