将泛型类型转换为对象

时间:2015-09-27 20:24:35

标签: java generics

让我们说我有一个处理返回并接受泛型类型的函数。该功能可能如下所示

openPanel.directoryURL = [NSURL fileURLWithPath:@"path"];

如果代码检测到t.toString()看起来像

,请说
public T call(T t) {
    Log.v(FILE_NAME, "t: " + t.toString());
    return null;
}

有什么方法可以将t转换成一个我们可以轻松操纵它的内容的对象?通过操作,我的意思是我们可以很容易地,例如将label1,label2和label3值更改为其他值,并返回修改后的t。

以防万一,在上面的示例中,传递的参数t的类型为{label1=5148.000, label2=8363.000, label3=715.000}

更新

  1. 是的,我正在实施Map<String,String>
  2. 将来,我可能会提供其他类型的参数,而不仅仅是Callable<T>

2 个答案:

答案 0 :(得分:1)

我完全确定你要求的是什么。如果您知道t始终属于Map<String, String>类型,则可以简单地投射它:

Map<String, String> myMap = (Map<String, String>) t;

答案 1 :(得分:1)

如果你需要让这个方法非常通用并且对一些众所周知的参数有一些特殊处理,你可以这样:

if (t instanceof Map) {
    // do something here
}