第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java泛型深入理解

標(biāo)簽:
Java

一.什么是泛型?

在JDK1.5之后,Java通过泛型解决了类型安全的问题,泛型的本质就是参数化的类型,也就是将所操作的数据类型作为参数。

二.泛型有哪些作用?

  1. 使用泛型能够写出更加灵活通用的代码。

  2. 泛型将对代码的安全性检查从运行期提前到了编译期。

  3. 泛型能够省去强制类型转换【由于编译期已经知道了准确的类型,因此在编译期会进行强制的类型转换,不用自己转换】

三.泛型的具体实现有哪些?

泛型类:

泛型类型用于类的定义中,被称为泛型类。通过泛型可以完成对一组类的操作对外开放相同的接口。最典型的就是各种容器类,如:List、Set、Map。

泛型类实例:

//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型

//在实例化泛型类时,必须指定T的具体类型

public class Generic<T>{ 

    //key这个成员变量的类型为T,T的类型由外部指定  

    private T key;


    public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定

        this.key = key;

    }


    public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定

        return key;

    }

}



泛型方法:

在java中,泛型类的定义非常简单,但是泛型方法就比较复杂了。

尤其是我们见到的大多数泛型类中的成员方法也都使用了泛型,有的甚至泛型类中也包含着泛型方法,这样在初学者中非常容易将泛型方法理解错了。

泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型 。

/**

 * 泛型方法的基本介绍

 * @param tClass 传入的泛型实参

 * @return T 返回值为T类型

 * 说明:

 *     1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。

 *     2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。

 *     3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。

 *     4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型。

 */

public <T> T genericMethod(Class<T> tClass)throws InstantiationException ,

  IllegalAccessException{

        T instance = tClass.newInstance();

        return instance;

}



泛型接口:

//定义一个泛型接口

public interface Generator<T> {

    public T next();

}


常用的表示: < E > 、 < T> 、 < K > 、 < V>
泛型通配符:<?> 能代表任何类型

四.泛型擦除

泛型只存在于代码编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉,专业术语上也叫类型擦除。

这里有一道经典的测试题:

List<String> l1 = new ArrayList<String>();

List<Integer> l2 = new ArrayList<Integer>();


System.out.println(l1.getClass() == l2.getClass());    


结果为true  在编译结束后在JVM中都会变成List.class


  • 如果泛型参数无界,那么编译器会将其替换为Object.

  • 如果泛型参数有界,那么编译器会将其替换为边界类型

public class TypeErasureDemo {

    public <T> void forEach(Collection<T> collection) {}  //1


    public <E extends String> void iter(Collection<E> collection) {} //2

}


如1 处代码,编译期会将其泛型替换为了Object,2处代码中编译期将泛型替换为了String


作者:龙马要一直变强啊

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消