在定义类的时候可以写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); // 1
14 getUpperNumberData(age); // 2
15 getUpperNumberData(number); // 3
16 }
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>形式,其含义与类型通配符上限正好相反,在此不作过多阐述了