这是小编第二篇介绍泛型的文章了,上篇是介绍 Java — 泛型 的使用介绍 之 泛型类 这次呢,介绍一下泛型方法,对编写工具类有较大的帮助,因为参数及返回值可以灵活自由定义。Let go!
编写泛型方法:
//public 后面的 <T> 是指明方法返回值及参数中的 T 属于泛型,
//而不是某个名为 T 的类。
public <T> List<T> show(T[] arr) {
ArrayList<T> list = new ArrayList<>();
for (T t : arr){
list.add(t);
}
return list;
}
使用:
public class GenericTest {
@Test
public void test2(){
//注意:泛型方法的参数不是为基本数据类型
//定义 char[] 数组,则编译不能通过。
//1,创建Integer类型数组
Integer[] integers = new Integer[]{1,2,34,5};
//2,创建String类型数组
String[] strings = new String[]{"dcd","a","cd","ad"};
//3,创建自定义类的数组。Good 为小编自定义的类。
//下面会有该类代码
Good[] goods = new Good[2];
goods[0] = new Good(12,"apple");
goods[1] = new Good(134, "phone");
//4,调用泛型方法
List<Integer> show = show(integers);
List<String> stringList = show(strings);
List<Good> goodList = show(goods);
System.out.println(show);
System.out.println(stringList);
System.out.println(goodList);
}
public <T> List<T> show(T[] arr) {
ArrayList<T> list = new ArrayList<>();
for (T t : arr){
list.add(t);
}
return list;
}
}
输出:
D:\jdk\jdk1.8.0_171\bin\java.exe
[1, 2, 34, 5]
[dcd, a, cd, ad]
[Good(price=12, name=apple), Good(price=134, name=phone)]
Good 类:
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Good{
private int price;
private String name;
}