【发布时间】:2012-06-29 17:15:13
【问题描述】:
我有一个通用的方法,例如:
public static<T> T execute(...) {
...
}
如何定义方法体中的 T 类型?例如:
if (T == String) {
// do something with strings
// return string;
}
if (T == Bitmap) {
// do something with bitmap
// return bitmap;
}
我尝试了以下方法,但没有成功:
T par = null;
if(par instanceof String) {
// do something with strings
// return string;
}
我尝试像下面这样声明par,但这也不起作用。
T par = (T) null;
T par = (T) new Object();
【问题讨论】:
-
如果你需要这样做,听起来你不想要泛型。
-
也许您希望重载函数而不是泛型?有一个方法
execute(String s)和另一个execute(BitMap b)? -
没有输入参数相同,重要的是返回值不同。
-
"我如何定义 T 是什么类型" 你没有定义 T 是什么。相反,调用者选择 T 是什么,您的方法必须能够使用任何选择的 T
标签: java generics instanceof