java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

转载:/content/3496176.html
http://www.weixueyuan.net/view/6321.html
http://www.weixueyuan.net/view/6323.html
/content/1909504.html
总结:
1. 泛型接口,泛型类,泛型方法
2. 通配符(?),泛型数组等
对泛型接口,example如下:

public interface Info<T> {
    public T getValue();
}

public class InfoImpl<T> implements Info<T> {
    
    private T value;

    public InfoImpl(T value) {
        // TODO Auto-generated constructor stub
        this.value = value;
    }
    
    @Override
    public T getValue() {
        // TODO Auto-generated method stub
        return value;
    }

}

public class Test {

    public static void main(String[] args) {
        Info<String> info = new InfoImpl<String>("chris");
        System.out.println(info.getValue());
    }
}

对泛型类,example如下:

public class NotePad<K,V> {
    private K k;
    private V v;
    
    public NotePad() {}
    
    public NotePad(K k, V v) {
        this.k = k;
        this.v = v;
    }
    
    public K getK() {
        return k;
    }
    public void setK(K k) {
        this.k = k;
    }
    public V getV() {
        return v;
    }
    public void setV(V v) {
        this.v = v;
    }
    
}

public static void main(String[] args) {
        NotePad<String, Integer> notePad = new NotePad<>("chen",30);
        System.out.println(notePad.getK()+"---"+notePad.getV());
        //
        NotePad<String, String> notePad2 = new NotePad<>("chen","chris");
        System.out.println(notePad.getK()+"---"+notePad2.getV());
        
    }

对泛型方法,example如下:

public class Base {
    private int value;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
    
}

public class Point<T1, T2> {

    private T1 t1;
    private T2 t2;
    
    public Point() {};
    
    public T1 getT1() {
        return t1;
    }
    public void setT1(T1 t1) {
        this.t1 = t1;
    }
    public T2 getT2() {
        return t2;
    }
    public void setT2(T2 t2) {
        this.t2 = t2;
    }    
}

public class Test {

    public static void main(String[] args) {
        Point<String, Integer> point = new Point<>();
        point.setT1("string");
        point.setT2(10);
        printPoint(point);

    }

    // one static method to test Generic Type
    // Generic Method
    public static <T1 extends Base, T2 extends Base> void printPoint(T1 x, T2 y) {
        System.out.println(x.getValue());
        System.out.println("-----------");
        System.out.println(y.getValue());
    }

    // another static method to test Generic Type
    // Generic Method
    public static void printPoint(Point<?, ?> point) {
        System.out.println(point.getT1());
        System.out.println("-----------");
        System.out.println(point.getT2());
    }
}

泛型:保证类型安全,且作用于编译阶段。
泛型擦除:指未使用泛型,尽管已经定义了泛型相关的类等。

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。