簡述
在學(xué)習(xí)了這三大模塊之后,我覺得有必要梳理一下,因為這三個模塊是綁在一起的,可以稱為三體了,當(dāng)然java體系本來就是彼此有關(guān)聯(lián)的,但是這三個模塊放在一起看,就顯得彼此是多么的重要,可以達(dá)到1+1+1>3的效果。
概念
在這里還是需要把各自的概念描述一下:
反射:就是反過來獲取類的信息。以前都是java文件最后生成class文件,現(xiàn)在反過來,在有Class對象的前提下,獲取整個類的信息。
泛型 :在不知道要操作什么數(shù)據(jù)類型的時候,用它代替。像裝數(shù)據(jù)的容器數(shù)組,集合等,或者即將操作的對象,都不清楚時,用它代替。
注解:注解就類似一個標(biāo)簽,給字段,方法,類,或者給注解本身,做一個標(biāo)記。
關(guān)聯(lián)
為什么會說這三者是三體為一體呢?
因為注解跟泛型,都在反射機(jī)制下大放光彩。
對反射而言,就是給我字節(jié)碼的Class對象,我就可以給你關(guān)于這個類的所有信息,這是一個簡單而粗暴的協(xié)議。那為什么要跟注解以及泛型扯上關(guān)系呢?
我們使用注解時,只是在這個運(yùn)用的對象,做一個標(biāo)記。而這個標(biāo)記并不會影響程序本身,也就是說去掉注解,程序還是可以運(yùn)行的。
在這個注解做了作用域限制之后,我們就可以根據(jù)這個限制去獲取這個注解需要注入操作對象的數(shù)據(jù),而重點(diǎn)是在于我們該怎么獲取這個數(shù)據(jù)呢?
這時候,反射就上場了。反過來獲取操作對象的數(shù)據(jù),再去獲取貼在這個操作對象的標(biāo)簽的數(shù)據(jù),也就是這個注解的數(shù)據(jù)。注解是給編譯器或者APT操作的,所以在這里運(yùn)用這個反射。
泛型是在我們不清楚該操作的是什么時,它就上場了。
比如說:我們在使用反射時不知道要返回什么對象,可以使用泛型通配,就類似這樣,給我傳入一個字節(jié)碼,就返回一個對象給你。不需要強(qiáng)轉(zhuǎn),不需要判斷,簡潔而有效。
泛型+反射
重中之重還是在反射,反射是非常規(guī)的操作,是倒過來的操作方式,而注解,泛型,也是在最后初始化的時候才會清楚的告訴你,這個是什么類型,所以反射跟注解,跟泛型,就能夠完美的配合在一起~~
