[英]How to use generic method parameters in Map.Entry?
我想創建一個采用Map.Entry
的通用List
的方法。 鍵應始終為String
類型,其值可以為任何值。
然后,我想提供以下條目:
public void test() {
List<Map.Entry<String, String>> strings;
apply(strings);
List<Map.Entry<String, Integer>> integers;
apply(integers);
}
private void apply(List<Map.Entry<String, ?>> entry) {
}
private void apply(List<Map.Entry<String, Object>> entry) {
}
但是:這兩個apply()
方法都不在這里起作用。 旁注:我無法更改條目的類型。 表示<String, String>
和<String, Integer>
必須保持原樣。
如何將它們納入通用Apply方法?
使apply
方法通用:
private <T> void apply(List<Map.Entry<String, T>> entry) {
}
請注意,根據您希望在apply
正文中執行的操作,使用private void apply(List<? extends Map.Entry<String, ?>> entry)
簽名可能不夠。
例如,如果您希望將列表中一個條目的值更改為另一條目的值。
以下內容不會通過編譯:
private void apply(List<? extends Map.Entry<String, ?>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}
但這將:
private <T> void apply(List<Map.Entry<String,T>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.