简介
本文用示例介绍Java在方法中加泛型的用法。
概述
方法前边的<T>: 表示本方法里边所有的T是由返回值的类型确定的。如果方法前边不加这个<T>,那就要在其他能说明这是泛型的地方加入,比如:类/接口 的定义处。
示例1:单个对象
package org.example.a;
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<Object, Object> map = new HashMap<>();
map.put("abc", 1);
map.put(12, "def");
Integer a = getValue("abc", map);
String str = getValue(12, map);
System.out.println("a:" + a + "; " + "str:" + str);
}
private static <T> T getValue(Object key, Map<Object, Object> map) {
return (T) map.get(key);
}
}
执行结果
a:1; str:def
示例2:集合
package org.example.a;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args){
List<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
String str = Demo.getFirst(list);
System.out.println(str);
List<String> subStrList = Demo.getFirstTwoSubList(list);
System.out.println(subStrList);
System.out.println(Demo.doNothing(list));
}
private static <T> T getFirst(List<T> data){
if(data == null || data.size() == 0){
return null;
}
return data.get(0);
}
private static <T> List<T> getFirstTwoSubList(List<T> data){
if(data == null || data.size() == 0){
return null;
}
List<T> newList = new ArrayList<>();
newList.add(data.get(0));
newList.add(data.get(1));
return newList;
}
private static <T> Integer doNothing(List<T> data) {
return 123;
}
}
执行结果
aa [aa, bb] 123
在这个示例中,那三个方法前边如果不加<T>,会报错,如下:

其他网址
《JAVA开发实战经典》=> 第10章 泛型
《JAVA开发实战经典》=> 第10章 泛型=> 10.4 通配符

请先 !