<T> T
表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T
就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> T
和T
的两种方法实现
用法
1、写在方法上
个人理解:不能直接在参数或者返回值写类型T,这样需要具体实际存在的类型;
但是可以加<T> 表示T是个泛型
/**
*
* 这个<T> T 可以传入任何类型的List
* * 参数T
* * 第一个 表示是泛型
* * 第二个 表示返回的是T类型的数据
* * 第三个 限制参数类型为T
* @param file json文件路径:"mockData/deviceData.json"
* @param c
* @param <T>
* @return
*/
public <T> T fileToJavaBean(String file, Class<T> c) {
if (StringUtils.isEmpty(file)) {
return null;
}
BufferedReader br = null;
StringBuilder result = new StringBuilder();
try {
InputStream is = JsonUtil.class.getClassLoader().getResourceAsStream(file);
br = new BufferedReader(new InputStreamReader(is));
String ret = "";
while ((ret = br.readLine()) != null)
{
if (ret != null && !ret.trim().equals(""))
{
result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
}
}
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
} catch (Exception e) {
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return JSON.parseObject(result.toString(), c);
}
}
public <T> void del(T obj) {
}
public <T> boolean del(T obj) {
return false;
}
public <T extends ObjectMapper> T build() {}
<T extends T2> 指传的参数或者返回的参数为T2或者T2的子类型。
2、定义在类上