Java泛型

Posted blog-lnw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java泛型相关的知识,希望对你有一定的参考价值。

泛型类,就是将类型先说明成一个简单的参数,比如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 }

 


以上是关于Java泛型的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

什么意思 在HashMap之前 ? Java中的泛型[重复]

这个嵌套类构造函数片段可以应用于泛型类吗?

201621123037 《Java程序设计》第9周学习总结

Java——泛型

作业09-集合与泛型