说散就散之前任泛型-1

 

泛型

本节要点:

  • 1 泛型类是带有一个或者多个类型的参数的类。
  • 2 泛型方法是带有类型参数的方法。
  • 3 你可以要求类型参数必须是一个或者多个类型的子类型。
  • 4 泛型类型是不变的,当S是T的子类是 G<S>和G<T>没有关系。
  • 5 通过使用通配符G<? extends T> 或者 G<> super T> 你可以制定一个方法接受一个带有子类或者父类参数的泛型类型的实例。
  • 6 当泛型类和泛型方法被编译时,类型参数会被擦除。
  • 7 类型擦除对泛型诸多限制,特别是,你不能实例化泛型类或者数组,不能转换成泛型类型,或者抛出一个泛型类的对象。
  • 8 Class<T> 是一个泛型类,他非常有用,因为诸如newInstance这样的方法被申明为一个T类型的值。
  • 9 即使泛型类和方法在虚拟机中被擦除,你也可以在运行时找出他们是如何申明的。

1 .泛型类

/**
 * 泛型类是有一个或者多个类型参数的类
 * @author gaolei
 **/
public class Entry<K,V> {

    private K key;
    private V value;

    public Entry(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }

}

  正如你看到的那样,类名之后的尖括号中指定了类型参数K和V,在类成员的定义中,他们被用作实例变量的类型、方法的参数和返回值的类型。

构造一个泛型类的对象是 例如  Entry<String ,Integer> entry = new Entry<>("1",2); 等同new Entry<String ,Integer>("1",2),注意类型参数不能用基本数据类型实例化。

2.泛型方法

/**
 * @author GAOLEI
 **/
public class Arrays {

    /**
     * 泛型方法是一个带有类型参数的方法 泛型方法可以是普通类或者泛型类
     * @param arr 数组
     * @param i   下标i
     * @param j   下标j
     * @param <T> 类型T
     */
    public static <T> void swap(T[] arr,int i,int j){
        T temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

swap方法可以交换任何数组中的元素(只要数组中的元素类型不是基本数据类型),
public static void main(String[] args) {
        String [] arr = {"1","2"};
        //<String> 非必须
        Arrays.<String>swap(arr,0,1);
        for (String s : arr) {
            System.out.println(s);
        }
    }
通过上面的例子你是否已经感受到泛型是如此的有用。
------------------------题外话--------------------------------

                                                         图片来源于网络

说不上爱别说谎就一点喜欢

说不上恨别纠缠别装作感叹

就当作我太麻烦不停让自己受伤

我告诉我自己感情就是这样

怎么一不小心太疯狂

抱一抱再好好觉悟不能长久

好不好有亏欠我们都别追究

算了吧我付出再多都不足够

每当听到这首说散就散笔者内省总会掀起波澜久久不能平静,不知道那些年错过的她们现在过得怎么样了,想想小时候还是太天真,哎。。。 在这里笔者希望有情人都能成眷属,没能在一起也要让他轰轰烈烈。当然说了这么多的前提是先有个女朋友

以上内容仅代表作者个人观点,有不恰当希望指正更改

Copyright 2018-1-7 by 风一样的男子

原文地址:https://www.cnblogs.com/java-gaolei/p/8232933.html