往往是這種類型的問題,我覺得有用下面的結構:
public final class Reinterpret {
@SuppressWarnings("unchecked")
public static <T> T cast(Object object) {
return (T)object;
}
}
,您可以使用,例如,像這樣:
...
public void process(Map<String, Object> data) {
// method can properly handle any Object value,
// including String
}
...
Map<String, String> stringData = ...
process(Reinterpret.<Map<String, Object>>cast(stringData));
...
正如你所猜測的那樣,Java泛型類型系統的非常精確的弱化受C++的reinterpret_cast操作符的啓發,並且適用於類似的上下文;然而,它也可以在其他幾個人使用,當你想降低您的鑄件,例如冗長,
Map<String, Object> objectMap = Reinterpret.cast(stringMap);
的Java 6的類型推斷是足夠強大(或足夠弱,取決於你的觀點,如)把右邊的表達式轉換成左邊的要求;但是,請注意,這對分配工作正常,但不適用於函數調用,這就是爲什麼上述示例要求在調用本身中完全指定參數類型的原因。
你能澄清你的意思是「5至6之間」嗎? –
我認爲他的意思是java版本 –
你能保證地圖的值只會是'List