比方說,我有一個函數可以處理哪些返回並接受泛型類型。該功能可能看起來像這樣將泛型類型轉換爲對象
public T call(T t) {
Log.v(FILE_NAME, "t: " + t.toString());
return null;
}
我們如果代碼檢測t.toString()看起來像
{label1=5148.000, label2=8363.000, label3=715.000}
說,有什麼辦法我可以T轉換爲對象,我們可以很容易地操縱它的內容?通過操縱,我的意思是我們可以輕鬆地將label1,label2和label3的值更改爲其他值,然後返回修改的t。
爲了以防萬一,在上面的示例中,傳遞的參數t的類型爲Map<String,String>
。
更新:
- 是的,我採取
Callable<T>
。 - 將來,我可能會提供其他類型的參數,而不僅僅是
Map<String,String>
。
不,你不能,因爲'對象'沒有這樣的字段。要麼你知道你想傳遞的對象的類型爲't'來爲'T'提供一個界限,或者你不能改變它的域。 (你也可以用反射來做一些討厭的東西,但是......不要考慮它) – Tom
@Tom,如果我知道我通過的對象類型爲t?有什麼辦法可以將t轉換爲對象嗎?在這種情況下,對象是Map –
imin
@imin如果它始終是'Map',爲什麼使用泛型?如果它不總是「Map」,那麼你的論點就會下降。 –