博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java泛型
阅读量:6908 次
发布时间:2019-06-27

本文共 2044 字,大约阅读时间需要 6 分钟。

1.定义

    Java的泛型:创建集合容器时规定其允许保存的元素类型

                     然后又编译器负责添加元素的类型合法性检查,

                     在取用几何元素时则不必再进行造型处理

    例如:

1 List list = new List();//没使用泛型之前,可以存储任何类型,2 //取用元素的时候也得进行造型(强制类型转换)3 String a = (String)list.get(1);4 5 //被附加了特别的约束条件,只能添加指定的类型的元素6 List
list = new List
();7 list.add(new Date());//报错,不能加入非String类型的元素8 String a = list.get(1);//不用再进行造型
View Code

2.泛型向后兼容

       由于泛型是JDK中后面新加入的特性,

       所以为了向过去兼容,新的编译器编译旧程序会出现警告
       可以通过使用 SuppressWarnings注解关闭编译提示信息
       eg:

1 import java.util.*; 2 import java.lang.SuppressWarnings; 3  4 @SuppressWarnings({"unchecked"}) 5 public class TestSuppressWarnings{ 6       public static void main(String[] args){ 7              Vector v = new Vector(); 8              v.addElement("Tom"); 9              v.addElement(new Date());10       }11 }
View Code

 

3.泛型类:有类型参数修饰的类型成为泛型类

       格式:数据类型<类型参数>

       eg:
           public class Vector<E>{
                 public void addElement(E obj){

                 }

            }

       3.1.定义自己的泛型类

1 //尖括号内的T相当于方法中的形参,可以任意取名 2 public class Person
{ 3 public final int id; 4 private T secrecy; 5 6 public Person(int id){ 7 this.id = id; 8 } 9 10 public int getId(){11 return id;12 }13 14 public T getSecrecy(){15 return secrecy;16 }17 18 public void setSecrecy(T secrecy){19 this.secrecy = secrecy;20 }21 }
View Code

 

4.泛型进阶:

        4.1.同一个泛型类搭配不同的类型参数复合而成的类型属于同一个类

             但却是不同的类型(总之,泛型就是一种特殊的类型)
        eg:
        Vector<String> Vector<Double> 就不是同一类型

       

        4.2.同一个泛型类于不同的类型参数复合而成的类型间并不存在继承关系

              即使是类型参数间存在继承关系是也是如此(否则会乱套)
        eg:

1 public class Test{2       public static void main(){3             Vector
v = new Vector
();4 v.add("Tom");5 Vector
v1 = v;//尽管String是Object子类,但此处却会报错6 v1.add(new Date());//这里就导致v的约束String类型,所以是不允许的7 }8 9 }
View Code

 

5.类型通配符“?”

      使用“”作为类型参数

      5.1. Vector<?>任何泛型Vector父类型
     

      5.2. Vector<?>类型的变量在调用方法时是受限制的--凡是必须知道具体类型参数才能进行的操作均被禁止

 

6.受限制的通配符(约束更严格)

     eg:

         public class Test<T extends Number>{//这里的T附加了必须继承Number类的条件
         }

转载地址:http://qpgdl.baihongyu.com/

你可能感兴趣的文章
KVM autotest
查看>>
Python语言特性之3:@staticmethod和@classmethod
查看>>
LoadAssetAtPath 与 Load 的区别
查看>>
Code Signal_练习题_Are Similar?
查看>>
定时炸弹--JQuery中的Deferred对象
查看>>
个人项目1——自动生成四则运算
查看>>
COBBLER无人值守安装
查看>>
时间--》梅叔叔
查看>>
如何从dvi生成pdf--------亲测有效果.
查看>>
ViewPager
查看>>
MBR和GPT分区学习
查看>>
鼠标事件-拖拽
查看>>
忘记网站密码了怎么查看(谷歌浏览器)
查看>>
10.属性
查看>>
1.单一职责原则(Single Responsibility Principle)
查看>>
LeetCode--058--最后一个单词的长度
查看>>
Mysql JSON 新特性用法
查看>>
关于老驱动不能在windows 8下正常安装的问题
查看>>
POJ 1458 Common Subsequence DP
查看>>
#ifdef,#else,#endif,#if用法详解
查看>>