Java基础之泛型

来源:互联网 发布:编辑部的故事 知乎 编辑:程序博客网 时间:2024/06/06 21:07

import java.util.ArrayList;import java.util.List;import static java.lang.System.*;/** * Created by leo on 17-7-11. Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 */public class GenericNote {    public static void main(String[] args){        Page<String> name = new Page<>();        Page<Integer> age = new Page<>();        ArrayList<String> names = new ArrayList<>();        names.add("abc");        names.add("def");        ArrayList<Integer> ages = new ArrayList<>();        ages.add(10);        ages.add(20);        name.setList(names);        age.setList(ages);        out.println("name class:" + name.getClass());//class:class Page        out.println("age class:" + age.getClass());//class:class Page        out.println(name.getClass() == age.getClass());//true        //调用泛型方法        Double[] doubles = {1.1, 2.2, 3.3};        printArray(doubles);        // extends的使用        int max = maximum(2, 3,  1);        out.println(max);        //类型通配符?,?代表不可知的类,相当于具体类的父类        getData(ages);        getData(names);        //    实现了泛型接口的类        Counter counter = new Counter();        out.println(counter.count("abcdefghijklmn"));    }//    泛型方法,<E>的存在是泛型方法定义的形式,其中E是类型的参数,意为E类型    public static <E> void printArray(E[] inputArray){        for (E e:inputArray) {            out.printf("%s", e);        }    }//    extends的使用,<T extends Comparable<T>>限定了T的类型范围。supers关键字的用法类似,含义相反而已    public static <T extends Comparable<T>> T maximum(T x, T y, T z){        T max = x;        if(y.compareTo(max) > 0){            max = y;        }        if(z.compareTo(max) > 0){            max = z;        }        return max;    }//    类型通配符?,?代表不可知的类,相当于具体类的父类,在list中就可以放入?的各个子类    public static void getData(List<?> data){        out.println("data : " + data.get(0));    }}// 泛型类class Page<T> {    private static final int PAGESIZE = 10;    private Long pageNow;    private ArrayList<T> list;    public Page() {        pageNow=1L;    }    public static int getPAGESIZE() {        return PAGESIZE;    }    public Long getPageNow() {        return pageNow;    }    public void setPageNow(Long pageNow) {        this.pageNow = pageNow;    }    public ArrayList<T> getList() {        return list;    }    public void setList(ArrayList<T> list) {        this.list = list;    }}// 接口泛型的定义interface Count<K, V> {    V count(K k);}//实现了该泛型接口的类class Counter implements Count<String, Integer>{    @Override    public Integer count(String s) {        return s.length();    }}


原创粉丝点击