泛型的应用

一、自定义泛型举例(通过类进行定义)

//设置一个取随机元素的泛型
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);
    }
}

 

posted @ 2024-01-09 20:13  她的回眸一直很美  阅读(22)  评论(0)    收藏  举报