对泛型的研究

来源:互联网 发布:知乎的卡通动物图标 编辑:程序博客网 时间:2024/06/11 08:59

在定义类的时候可以写className<T>    T叫做泛型形参

在childCls extends className<T> 就不可以

但是childCls<T> extends className<T>可以

类名里写的泛型类型在整个类里都可以使用

如果类里没有定义泛型, 方法里也可以定义

<T>  T methodName (T t):   在方法名前面加上<T> 这样T就可以用在方法的返回类型或者参数类型都可以

<T> 在方法里适用,在变量定义里不适用


//以下内容来自:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

有时候,我们还可能听到类型通配符上限和类型通配符下限。具体有是怎么样的呢?

在上面的例子中,如果需要定义一个功能类似于getData()的方法,但对类型实参又有进一步的限制:只能是Number类及其子类。此时,需要用到类型通配符上限。

复制代码
 1 public class GenericTest { 2  3     public static void main(String[] args) { 4  5         Box<String> name = new Box<String>("corn"); 6         Box<Integer> age = new Box<Integer>(712); 7         Box<Number> number = new Box<Number>(314); 8  9         getData(name);10         getData(age);11         getData(number);12         13         //getUpperNumberData(name); // 114         getUpperNumberData(age);    // 215         getUpperNumberData(number); // 316     }17 18     public static void getData(Box<?> data) {19         System.out.println("data :" + data.getData());20     }21     22     public static void getUpperNumberData(Box<? extends Number> data){23         System.out.println("data :" + data.getData());24     }25 26 }
类型通配符上限通过形如Box<? extends Number>形式定义,相对应的,类型通配符下限为Box<? super Number>形式,其含义与类型通配符上限正好相反,在此不作过多阐述了