導入
まず、あまり実用的ではない説明を紹介させてください。Java反射メカニズムは、実行状態では、どのクラスでも、このクラスのすべての特性と方法を知ることができるということです。任意のオブジェクトについては、そのメソッドとプロパティを呼び出すことができます。情報を動的に取得し、オブジェクトメソッドを動的に呼び出すこの機能は、Java言語の反射メカニズムと呼ばれます。
簡単な使用
反射はJavaで非常に一般的で使いやすい方法です(ただし、その効率が比較的低いことを知る必要があるため、注意して使用する必要があります)もちろん、Java言語に基づいてAndroidで使用することもできます。反射を使用して、オープンではなく実存的なクラスを取得して、その方法のいくつかを呼び出すことができます。 Java Reflectionを使用してクラスとそれを呼び出すメソッドの実装を取得して、以下に簡単に書き留めましょう。
//呼び出される必要があるクラスのパスは、文字列classname = "com.example.test.javareflect"; class refferm = null; try {// get java class resprec = class.forname(classname); //対応するクラスオブジェクトJavareFlect = riffem.newinstance()をインスタンス化します。 if(null!= javareflect){// classクラスのstringtoup()メソッドを反映しますstringtoupはメソッド名であり、string.classはパラメータータイプメソッドstringtoup = refferm.getdeclaredmethod( "stringtoup"、string.class); //プライベートメソッドへのアクセスの合法的なチェックをキャンセルStringToup.SetAccessible(true); // stringtoup()メソッドを計算し、最初のパラメーターは対応するクラスを表し、2番目はメソッドstring str =(string)stringtoup.invokeのパラメーターです(javareflect、 "java反射テスト"); System.out.println( "result:"+str); }} catch(例外e){e.printstacktrace();} StringToupで私がしたことを見てみましょう:
public string stringtoup(string str){return str.touppercase();}実際、それを資本に変換してから返品するのは単なる文字列です。 OK、出力の結果を見てみましょう。
01-02 08:09:11.959 6150-6150/com.zxf.alpha i/system.out:result:javaはテストを反映しています
それは単に完璧です。
要約します
OK、上記はこの記事に関するすべてです。 ReflectionにはAndroidに多くのアプリケーションがあります。たとえば、プロジェクトに複数のモジュールがある場合、モジュール内のメインプログラムのメソッドを呼び出す場合、またはリフレクションを使用してシステムパブリックメソッドを呼び出すことができますが、効率はそれほど高くありません。この記事の内容が、Javaで放射線を学んだり使用したりするために、誰にとっても役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。