Java --- 泛型 <T> 的使用介绍 之 泛型方法
这是小编第二篇介绍泛型的文章了,上篇是介绍 这次呢,介绍一下泛型方法,对编写工具类有较大的帮助,因为参数及返回值可以灵活自由定义。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:jdkjdk1.8.0_171injava.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; }