黑马程序员--泛型

时间:2023-02-18 07:57:13

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------



泛型:

泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制。

 

好处

1,将运行时期出现的问题ClassCastException,转移到了编译时期。

         方便与程序员解决问题,让运行时间问题减少,安全。

2,避免了强制转换的麻烦。

 

泛型格式:通过<>来定义要操作的引用数据类型。

 

在使用java提供的对象时,什么时候写泛型呢?

 

通常在集合框架中很常见。

只要见到<>就要定义泛型。

 

其实<> 就是用来接收类型的。

 

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

 

泛型的使用:

泛型类:

就是在类声明时通过一个标识符表示类中某个字段的类型或者某个方法的返回值或参数的类型,只需要在类声明或者实例化的时候指定自己需要的类型就可以了。

在集合中加入泛型,就不用进行强制类型转换。

 

泛型类实例:

package com.itheima;

 

public class GenericDemo{

    public static void main(String[] args) {

 

       GenericTest<Integer> gt =new GenericTest<Integer>();

       gt.setX(3);

       gt.setY(4);

       System.out.println(gt);

      

    }

 

}

//在类上面定义泛型。

class GenericTest<T>{

    //通过泛型创建泛型所对应的对象。

    private Tx ;

    private Ty;

    public T getX() {

       returnx;

    }

    public void setX(T x) {

       this.x =x;

    }

    public T getY() {

       returny;

    }

    public void setY(T y) {

       this.y =y;

    }

    @Override

    public String toString() {

       return"GenericTest[x=" + x + ", y=" + y + "]";

    }

}

多个泛型通配符。   

格式:

public interface IDAO<PK, T> {

        

         PKadd(T t);

 

         voidremove(PK id);

 

         voidupdate(PK id, T t);

 

         Tget(PK id);

}

?通配符,例如:List<?>;表示未知元素的List集合。

这种带通配符的List仅表示各种泛型List的父类,并不能把元素添加入集合中;

 

通配符的上限与下限。

<? extends 类>:通配符的上限,通配符的上限使用extend,只能是?或者?的子类。

<? super 类>:通配符的下限,通配符的下限使用super,只能是?或者?的父类。

泛型接口和方法

java5后,可以声明泛型接口,声明方式和声明泛型类是一样的。

public interface IDAO<T>{}

泛型接口子类有两种方式:

直接在子类后申明泛型;

在子类实现的接口中给出具体的泛型类型

public class DaoImpl<T> implementsIDAO<T>{}

public class DaoImpl implementsIDAO<String>{}