泛型类,就是将类型先说明成一个简单的参数,比如T或E(一般就是用T或E),然后通过创建类的对象,并说明对象的参数,比如
1 public class GenericClass <T>{ //定义泛型类,T是类型参数
2 private T obj;
3
4 public T getObj() {
5 return obj;
6 }
7
8 public void setObj(T obj) {
9 this.obj = obj;
10 }
11 public static void main(String[] args) {
12 //创建<String>型对象
13 GenericClass<String> name=new GenericClass<String>();
14 //创建<Integer>型对象
15 GenericClass<Integer> age=new GenericClass<Integer>();
16 name.setObj("陈 磊");
17 String newName=name.getObj();
18 System.out.println("姓名:"+newName);
19 age.setObj(25); //java自动将25包装为new Integer(25)
20 int newAge=age.getObj(); //java将Integer类型自动拆箱为int类型
21 System.out.println("年龄:"+newAge);
22 }
23 }
输出:
姓名:陈 磊
年龄:25
参数T首先是String,第二次的T是Integer
二、限制泛型的可用类型
class className<T extends anyClass>
anyClass 是指某个类型或接口,这就意味着该类创建的对象必须是anyClass类或是其子类
1 class GeneralType<T extends Number>{ //类型T必须是Number类或是其子类
2 private T obj;
3
4 public T getObj() {
5 return obj;
6 }
7
8 public void setObj(T obj) {
9 this.obj = obj;
10 }
11 }
12 public class LimitGereric {
13 public static void main(String[] args) {
14 GeneralType<Integer> num=new GeneralType<Integer>();
15 num.setObj(5);
16 System.out.println("给出的参数是:"+num.getObj());
17 //GeneralType<String> n=new GeneralType<String>();
18 //泛型为String类型,会报错
19 }
20 }
三、定义泛型方法
1 public class GerericMethod {
2 //定义泛型方法,T为类型参数
3 public static <T> void display(T[] list) {
4 for(int i=0;i<list.length;i++) {
5 System.out.print(list[i]+" ");
6 }
7 System.out.println();
8 }
9 public static void main(String[] args) {
10 Integer[] num= {1,2,3,4,5};
11 String[] str= {"红","橙","黄","绿","青","蓝","紫"};
12 GerericMethod.display(num);
13 GerericMethod.<String>display(str);
14 }
15 }