乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于java反射,你真的了解嗎?

       然并卵書(shū)屋 2017-05-27

      關(guān)于java反射,你真的了解嗎?

      反射的概念在 Java中是一個(gè)難點(diǎn),對(duì)于剛接觸的同學(xué)來(lái)說(shuō),不太容易理解,如何更好的掌握反射技術(shù),并學(xué)會(huì)在實(shí)際中應(yīng)用,需要反復(fù)練習(xí)和研究,威哥在這里建議大家,不要心急,老話說(shuō)心急吃不了熱豆腐,只要我們有唧唧復(fù)唧唧的精神,吃透反射的概念那是遲早的事。

      什么是反射

      Java 反射是可以讓我們?cè)谶\(yùn)行時(shí)獲取類的方法、屬性、父類、接口等類的內(nèi)部信息的機(jī)制。也就是說(shuō),反射本質(zhì)上是一個(gè)“反著來(lái)”的過(guò)程。我們通過(guò)new創(chuàng)建一個(gè)類的實(shí)例時(shí),實(shí)際上是由Java虛擬機(jī)根據(jù)這個(gè)類的Class對(duì)象在運(yùn)行時(shí)構(gòu)建出來(lái)的,而反射是通過(guò)一個(gè)類的Class對(duì)象來(lái)獲取它的定義信息,從而我們可以訪問(wèn)到它的屬性、方法,知道這個(gè)類的父類、實(shí)現(xiàn)了哪些接口等信息。

      我們知道使用javac能夠?qū)?java文件編譯為.class文件,這個(gè).class文件包含了我們對(duì)類的原始定義信息(父類、接口、構(gòu)造器、屬性、方法等)。.class文件在運(yùn)行時(shí)會(huì)被ClassLoader加載到Java虛擬機(jī)(JVM)中,當(dāng)一個(gè).class文件被加載后,JVM會(huì)為之生成一個(gè)Class對(duì)象,我們?cè)诔绦蛑型ㄟ^(guò)new實(shí)例化的對(duì)象實(shí)際上是在運(yùn)行時(shí)根據(jù)相應(yīng)的Class對(duì)象構(gòu)造出來(lái)的。確切的說(shuō),這個(gè)Class對(duì)象實(shí)際上是java.lang.Class泛型類的一個(gè)實(shí)例,比如Class對(duì)象即為一個(gè)封裝了MyClass類的定義信息的Class實(shí)例。由于java.lang.Class類不存在公有構(gòu)造器,因此我們不能直接實(shí)例化這個(gè)類。

      如何獲取,class文件對(duì)象

      1、使用類的對(duì)象獲取

      每個(gè)類都使用Object作為父類,Object類方法 getClass()

      返回這個(gè)類的class文件對(duì)象,方法返回值Class類型對(duì)象

      2、使用類的靜態(tài)屬性獲取

      類名.class 返回這個(gè)類的class文件對(duì)象.屬性運(yùn)行結(jié)果也是Class類型對(duì)象

      3、使用Class類的靜態(tài)方法獲取

      Class類靜態(tài)方法 forName(String 類名) 傳遞字符串類名

      獲取到這個(gè)類的class文件對(duì)象,方法返回值也是Class類型對(duì)象

      不管用哪種方式獲取的Class對(duì)象,他們都是相等的。

      關(guān)于java反射,你真的了解嗎?

      關(guān)于java反射,你真的了解嗎?

      獲取構(gòu)造

      關(guān)于java反射,你真的了解嗎?

      獲取成員變量

      關(guān)于java反射,你真的了解嗎?

      反射在 Android中的應(yīng)用

      JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語(yǔ)言的反射機(jī)制。

      然而在android中Google很多的類的某些方法不讓第三方應(yīng)用去調(diào)用,通過(guò)java反射機(jī)制能把這些隱藏方法獲取出來(lái)并調(diào)用,三方應(yīng)用上我們就很方便的去用這些方法。

      例如我們需要安全的殺死某個(gè)應(yīng)用的服務(wù)和進(jìn)程調(diào)用ActivityManager.forceStopPackage()方法很方便:

      關(guān)于java反射,你真的了解嗎?

      當(dāng)然隱藏了這些API是為了防止第三方應(yīng)用打破其他應(yīng)用程序,停止服務(wù),消除他們的警報(bào)等等。隱藏的這些api肯定也是有系統(tǒng)權(quán)限的,這些權(quán)限也是被隱藏的,那么我們?cè)趺丛谧约旱膽?yīng)用里去調(diào)用這些權(quán)限呢?

      package='com.acer.shadow.apps'

      android:versionCode='1'

      android:versionName='1.0'

      android:sharedUserId='android.uid.system'>

      ='android.permission.FORCE_STOP_PACKAGES'/>

      如上,我們只需要在AndroidManifest.xml中添加android:sharedUserId='android.uid.system'這句就能調(diào)用系統(tǒng)的一些隱藏權(quán)限,但是這樣還不行,這個(gè)應(yīng)用還得簽名。

      用命令行進(jìn)入到目錄下面輸入

      java -jar signapk.jar platform.x509.pem platform.pk8 ResApp.apk DesApp.apk

      ResApp.apk:要簽名的apk DesApp.apk簽名后生成的apk。

      Android班已確定提前開(kāi)班,想學(xué)的同學(xué)請(qǐng)抓緊報(bào)名,過(guò)時(shí)不候哦。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多