如何取得泛型类实例的泛型类型?
发布网友
发布时间:2022-04-30 01:57
我来回答
共4个回答
热心网友
时间:2022-04-27 09:51
你即然都这样写了,直接取出就是String了,使用泛型的最大好处就是能够减少强制转换这一步,减少出错,例如:
List<String> list=new ArrayList<String>();
list.add(new String("Hello"));
list.get(0);//直接取得就是String,无需这样写:(String)list.get(0);
热心网友
时间:2022-04-27 11:09
T t = list.get(0);
if(t instanceof String) {
//trim一下
}else if(t instanceof Integer) {
//取每元素绝对值
}
//把元素取出来再判断类型是可行的。
//反射机制是要在知道具体的类名(字符串)或是实例时可以用得上。泛型好像用不上,T不能作为一个字符串来使用。T.class.getName()编译通不过。
热心网友
时间:2022-04-27 12:44
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;
}
}
热心网友
时间:2022-04-27 14:35
String temp = (String)lst.get(0);