泛型的应用
一、自定义泛型举例(通过类进行定义)
//设置一个取随机元素的泛型 public class CollectionUtils<E>{ private List<E> data = new ArrayList(); public void add(E element){ data.add(element); } public E randomSelect(){ int idx = new Random().nextInt(data.size()); E rex = data.get(idx); return rex; } public static void main(String[] args){ CollectionUtils<String>utils = new CollectionUtils(); utils.add("张三"); utils.add("李四"); utils.add("王五"); String name = utils.randomSelect(); System.out.println(name); } }
二、泛型方法定义
格式:
public<T>List<T>transferToList(T[] array){
}
//以下是一个数组转为List的方法,用于泛型方法的应用 import java.util.*; public class Method { public <T>List<T> transferToList(T[] array){ List<T> list = new ArrayList(); for(T item:array){ list.add(item); } return list; } public static void main(String[] args) { Method method=new Method(); String[] array = new String[]{"A", "B", "C", "D", "E"}; List<String> list = method.transferToList(array); System.out.println(list); } }
三、泛型及其通配符的使用
格式(例如):
//方法定义(代表只有可能是shape或者是shape的子类,其他泛型不能)
public void doSth(List<? extends Shape>shapeList)
//方法定义(代表只有可能是Rectangle的父类或者Rectangle,其他的不能)
public void doSth(List<?super Rectangle> shapeList)
//继承自父类shape的circle类,在调用相应方法时的操作 public class ShapeUtils { public void drawAll(List<? extends Shape>shapeList){ for(Shape shape:shapeList){ shape.draw();//此处draw()方法为父类以及子类中均有的方法 } } public static void main(String[] args) { ShapeUtils utils=new ShapeUtils(); List<Circle> circleList=new ArrayList(); utils.drawAll(circleList); } }
浙公网安备 33010602011771号