亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Java反射問題:為什么android.os.Message的recycleUnchecked方法不能通過反射獲取到?

瀏覽:124日期:2024-01-19 10:27:09

問題描述

Android源碼相關(guān)編程測試的時候遇到問題,想用Java的反射機制調(diào)用Message的方法recycleUnchecked()(該方法不能直接在包外調(diào)用),使用如下語句:

Message.obtain().getClass().getDeclaredMethod('recycleUnchecked');

運行時異常為:NoSuchMethodException

查看Java的API文檔:getDeclaredMethod方法是能獲取到當(dāng)前類(父類繼承的不算)中的所有方法,包括public,private,default和protected的

而recycleUnchecked方法在android.os.Message中的定義如下:

void recycleUnchecked(){...}

所以正常情況我的代碼應(yīng)該能夠正常訪問到相應(yīng)方法的。

接著為了深入了解異常出現(xiàn)的原因,我用下面的代碼列出了Message中的所有方法:

int i = 0;Method[] methods = Message.obtain().getClass().getDeclaredMethods();for(Method method : methods){ i++; Log.i('JiahongZhou', i + '---' + method.getName() + method.getParameterTypes().toString());}

輸出結(jié)果如下:

JiahongZhou: 1---clearForRecycle[Ljava.lang.Class;@426d15d0JiahongZhou: 2---copyFrom[Ljava.lang.Class;@426dd788JiahongZhou: 3---describeContents[Ljava.lang.Class;@426e76d8JiahongZhou: 4---getCallback[Ljava.lang.Class;@426edbf0JiahongZhou: 5---getData[Ljava.lang.Class;@426eb8f8JiahongZhou: 6---getTarget[Ljava.lang.Class;@426ee8d8JiahongZhou: 7---getWhen[Ljava.lang.Class;@426f8f18JiahongZhou: 8---isAsynchronous[Ljava.lang.Class;@4271df20JiahongZhou: 9---isInUse[Ljava.lang.Class;@4272c078JiahongZhou: 10---markInUse[Ljava.lang.Class;@42761010JiahongZhou: 11---peekData[Ljava.lang.Class;@427e04d8JiahongZhou: 12---recycle[Ljava.lang.Class;@427e13e8JiahongZhou: 13---sendToTarget[Ljava.lang.Class;@4280ee48JiahongZhou: 14---setAsynchronous[Ljava.lang.Class;@42830f68JiahongZhou: 15---setData[Ljava.lang.Class;@4285ab70JiahongZhou: 16---setTarget[Ljava.lang.Class;@428904d0JiahongZhou: 17---toString[Ljava.lang.Class;@42891d78JiahongZhou: 18---toString[Ljava.lang.Class;@428a5248JiahongZhou: 19---writeToParcel[Ljava.lang.Class;@428ab450JiahongZhou: 20---access$000[Ljava.lang.Class;@428b8e88JiahongZhou: 21---obtain[Ljava.lang.Class;@428c6458JiahongZhou: 22---obtain[Ljava.lang.Class;@428da478JiahongZhou: 23---obtain[Ljava.lang.Class;@428e6288JiahongZhou: 24---obtain[Ljava.lang.Class;@428ff468JiahongZhou: 25---obtain[Ljava.lang.Class;@42915900JiahongZhou: 26---obtain[Ljava.lang.Class;@42915a08JiahongZhou: 27---obtain[Ljava.lang.Class;@42964730JiahongZhou: 28---obtain[Ljava.lang.Class;@425ef398JiahongZhou: 29---readFromParcel[Ljava.lang.Class;@425f50d0

可以看到在上面的輸出中看不見recycleUnchecked方法,然而和它定義相似(參數(shù)類型,訪問權(quán)限限定符以及返回值均相同)的方法markInUse卻能輸出。

MarkInUse定義如下:

void markInUse(){...}

請問:Java的反射機制是否對某些特殊的方法做了不能被反射獲取的限制?為什么這里我獲取不到recycleUnchecked方法呢?是因為它本身在類加載的時候就不在Message的class對象里面嗎?如果沒有,那么它又是怎樣被訪問的呢?

問題解答

回答1:

android.os.Message 類中只有 recycle() 方法,沒有你說的 recycleUnchecked() 方法,可以通過 SDK-Manager 下載 Android 的源碼。Java反射問題:為什么android.os.Message的recycleUnchecked方法不能通過反射獲取到?

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 欧美在线香蕉在线现视频 | 久久久精品久久久久久久久久久 | 国产自产在线 | 牛牛a级毛片在线播放 | 99精品视频在线观看免费播放 | 加勒比日本道 | 国产大乳孕妇喷奶水在线观看 | 欧美日韩在线国产 | 国内精品久久久久久久aa护士 | 成人免费影院 | 一本伊大人香蕉高清在线观看 | 老司机免费福利午夜入口ae58 | 三级全黄的全黄三级三级播放 | 午夜一级影院 | 免费观看a级网站 | 天堂一区二区在线观看 | 国产欧美17694免费观看视频 | 国产人成免费视频 | 久久精品国产亚洲7777 | 男人精品一线视频在线观看 | 成人精品亚洲 | 毛片无码国产 | 成年美女黄网站色视频大全免费 | 欧美在线观看一区二区三区 | 免费观看女人一摸全是水 | 日韩经典欧美精品一区 | 精品在线视频一区 | 美女毛片在线看 | 亚洲伦乱 | 亚洲综合视频在线观看 | 欧美日韩色黄大片在线视频 | 久久久成人啪啪免费网站 | 国产亚洲福利精品一区二区 | 日本成人在线视频网站 | 欧美成人观看视频在线 | 精品在线看| 在线观看亚洲网站 | 91视频综合网 | 日本一级特黄特色大片免费视频 | 高清大学生毛片一级 | 在线观看91精品国产入口 |