を取得したいので、リフレクションを使用して取得します。Bundle中持有的mMap集合.在bundle类中,有getMap()方法可以获取,但是被标记为hide リーリー
Bundle
mMap
bundle
getMap()
hide
ソースコードで見たメソッドは以下の通りです: (メソッド名のみコピーします。)
その中で、
と聞きたいです。 isParcelled(),getPairValue()也是被标记为hide私の携帯電話は
isParcelled()
getPairValue()
认证高级PHP讲师
Api23 と Api25 のバンドル ソース コードを比較しましたが、getMap に関する明確な情報はありませんでした。次に、Api16 と Api25 のバンドル ソース コードを比較し、以下の図の黄色のブロックに示すような手がかりを見つけました。 Api25 では Bundle が BaseBundle を拡張していますが、Api16 では拡張されておらず、両方の側で使用されるデータ構造も変更されていることがわかります。
の BaseBundle を見てみましょう。実際に getMap があります: リーリー 次に、Api23 の BaseBundle で getMap を検索してみましょう。結果は次のとおりです。
明らかに、Api23 では、Bundle にもその親クラス BaseBundle にも getMap メソッドがないため、リフレクションは実行できません。どちらか調整しました。
@hide は javadoc タグに属しており、バンドル ソース コードが jar パッケージにコンパイルされると、生成された jar パッケージは開発者用であるため、IDE に直接渡すことはできません。バンドル オブジェクトへの参照は、バンドル クラスの Hide メソッドを直接呼び出します。これは、SDK コンパイル済みバージョンと変わりません。 Android 全体に慣れたら、Android ソース コードをコンパイルして独自の android.jar パッケージを生成してみることができます。たとえば、ここには多くのカメラ開発があり、多くのカメラ メソッドが隠されています。毎回リフレクションを介して Hide メソッドを呼び出すのは望ましくないため、カメラ内に隠されているメソッドを IDE で直接呼び出すことができるように、android.jar パッケージの完全なセットを独自にコンパイルしました。
Api23 と Api25 のバンドル ソース コードを比較しましたが、getMap に関する明確な情報はありませんでした。
Api25次に、Api16 と Api25 のバンドル ソース コードを比較し、以下の図の黄色のブロックに示すような手がかりを見つけました。
Api25 では Bundle が BaseBundle を拡張していますが、Api16 では拡張されておらず、両方の側で使用されるデータ構造も変更されていることがわかります。
の BaseBundle を見てみましょう。実際に getMap があります: リーリー 次に、Api23 の BaseBundle で getMap を検索してみましょう。結果は次のとおりです。
明らかに、Api23 では、Bundle にもその親クラス BaseBundle にも getMap メソッドがないため、リフレクションは実行できません。どちらか調整しました。
@hide は javadoc タグに属しており、バンドル ソース コードが jar パッケージにコンパイルされると、生成された jar パッケージは開発者用であるため、IDE に直接渡すことはできません。バンドル オブジェクトへの参照は、バンドル クラスの Hide メソッドを直接呼び出します。これは、SDK コンパイル済みバージョンと変わりません。
Android 全体に慣れたら、Android ソース コードをコンパイルして独自の android.jar パッケージを生成してみることができます。たとえば、ここには多くのカメラ開発があり、多くのカメラ メソッドが隠されています。毎回リフレクションを介して Hide メソッドを呼び出すのは望ましくないため、カメラ内に隠されているメソッドを IDE で直接呼び出すことができるように、android.jar パッケージの完全なセットを独自にコンパイルしました。