如何取得泛型类实例的泛型类型?

例如:List<String>lst=newArrayList();如何能取得到lst引用对象的实例是String类型?上面只是举个例子,如果不知道呢?泛型的用法我是知道... 例如:
List<String> lst = new ArrayList();
如何能取得到lst引用对象的实例是String类型?
上面只是举个例子,如果不知道呢?

泛型的用法我是知道的,其实这个问题的解决方案应该是使用反射机制在程序运行时动态取得泛型类实例的泛型对象,但是我查了相关的API,没有找到相应的接口,不知道哪位仁兄能提供一个解决方案,先谢了。

比如:
public T List<T> testGenericType(List<T> lst) {
//这里如何取得list当中可以放什么对象?
//如果T是String对象,将每元素trim一下
//如果T是Integer对象,取每元素绝对值
}
该如何写方法里面的实现?
是判断实例对象的泛型对象类型,而不是把元素取出来判断类型,能提供解决方案的再追加100分
展开
 我来答
cuiyue_zd
推荐于2016-11-24 · TA获得超过256个赞
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
你即然都这样写了,直接取出就是String了,使用泛型的最大好处就是能够减少强制转换这一步,减少出错,例如:
List<String> list=new ArrayList<String>();
list.add(new String("Hello"));

list.get(0);//直接取得就是String,无需这样写:(String)list.get(0);
qzai2000
2008-09-28 · TA获得超过503个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:224万
展开全部
T t = list.get(0);
if(t instanceof String) {
//trim一下
}else if(t instanceof Integer) {
//取每元素绝对值
}
//把元素取出来再判断类型是可行的。
//反射机制是要在知道具体的类名(字符串)或是实例时可以用得上。泛型好像用不上,T不能作为一个字符串来使用。T.class.getName()编译通不过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l3130y
2008-09-28 · TA获得超过952个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:558万
展开全部
List<String> lst=new ArrayList<String>();
String dd=lst.get(int index);取出的值就已经是String类型了

/*Pair类引入了一个类型变量T,用尖括号(<>)括起,并放在类名的后面。泛型类可以有多个类型变量。例如,可以定义Pair类,其中第一个域和第二个域使用不同的类型:
public class Pair<T,U>{...}
类定义中的类型变量指定方法的返回类型以及局部变量的类型。例如:
private T first;
用具体的类型替换类型变量就可以实例化泛型类型。例如:
Pair<String>
可以将结果想象成带有构造器的普通类
Pair<String>()
Pair<String>(String,String)
和方法
String getFirst()
String getSecond()
void setFirst(String)
void setSecond(String)
换句话说,泛型类可看作普通类的工厂。
*/
public class Pair<T>
{
private T first;
private T second;

public Pair()
{
first = null;
second = null;
}
public Pair(T first,T second)
{
this.first = first;
this.second = second;
}
public T getFirst()
{
return first;
}
public T getSecond()
{
return second;
}
public void setFirst(T newValue)
{
first = newValue;
}
public void setSecond(T newValue)
{
second = newValue;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友02413d508
2008-09-28 · TA获得超过139个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:141万
展开全部
String temp = (String)lst.get(0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式