Class<T> 类传递及泛型数组
一,类传递
我们先看下面的代码
public static <T> List<T> parseArray(String response,Class<T> object){ List<T> modelList = JSON.parseArray(response, object); return modelList;
}//使用时:
list<String> list=parseArray(json,String.class);
1,通过Class进行类型传递
public static <T> T unmarshal(String str, Class<T> valueType) throws Exception{return objectMapper.readValue(str, valueType);
}
// 错误使用-同上面的方法直接报错
List<String> list=unmarshal(json,List<String>.class);
// 正确使用
List<String> list=unmarshal(json,new List<String>().getClass());
2,通过TypeReference进行类型传递
public static <T> T unmarshal(String str, TypeReference valueTypeRef) throws Exception{return objectMapper.readValue(str, valueTypeRef);
}
// 使用
List<String> list=unmarshal(json,new TypeReference<List<String>>(){});
二、泛型数组
首先,定义了一个静态函数,然后定义返回值为T[],参数为接收的T类型的可变长参数。
如果有同学对T...arg的用法不了解,可以去找下JAVA 可变长参数方面的知识。
由于可变长参数在输入后,会保存在arg这个数组中,所以,我们直接把数组返回即可。
//定义
public static <T> T[] fun1(T...arg){ // 接收可变参数 return arg ; // 返回泛型数组
}
//使用
public static void main(String args[]){ Integer i[] = fun1(1,2,3,4,5,6) ; Integer[] result = fun1(i) ;
}