Javaは反射操作コードを簡略化する優雅な書き方をお勧めします
1754 ワード
Javaで反射する書き方や関連サードパーティパッケージライブラリは多いですが、筆者は
この倉庫は何年も使っていますが、どうして使いやすいですか.Javaファイルが1つしかないほどコンパクトで、書かれたコードが優雅であるためです.
まず、Javaオリジナルが提供する反射の書き方を振り返ります.例えば、
もっと高い使い方は自分でプロジェクトドキュメントを見に行きましょう.どうせ実現原理も超簡単で、Javaに反射する包装です.
本文は転載して1つの簡略化の反射の操作のコードの優雅な書き方を推薦します
JOOR
,GitHubリンクが大好きですhttps://github.com/jOOQ/jOOR. この倉庫は何年も使っていますが、どうして使いやすいですか.Javaファイルが1つしかないほどコンパクトで、書かれたコードが優雅であるためです.
まず、Javaオリジナルが提供する反射の書き方を振り返ります.例えば、
DataManager
を調整したい静的方法get
です.以下のようにします.try {
final Method m = DataManager.class.getMethod("get", Context.class);
m.setAccessible(true);
m.invoke(null, this);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
JOOR
を用いた書き方は以下の通りである.Reflect.on(DataManager.class).call("get", this);
もっと高い使い方は自分でプロジェクトドキュメントを見に行きましょう.どうせ実現原理も超簡単で、Javaに反射する包装です.
JOOR
は主にReflect
とReflectException
を提供し、具体的には以下の通りである.Reflect.on:
は、クラスまたはオブジェクトを包み、このクラスまたはオブジェクト上で反射することを示し、クラスの値はClass
であってもよいし、完全なクラス名であってもよい.Reflect.create:
は、on
クラスの構造方法を呼び出すために使用され、2つのリロードがあり、1つはパラメータがあり、1つはパラメータがない.Reflect.call:
メソッド呼び出し、メソッド名とパラメータを入力し、戻り値がある場合はget
メソッド呼び出して戻り値を受信する必要があります.Reflect.get:
取得(field
およびmethod
戻り)値に関連して、タイプ変換が行われ、call
およびfield
と組み合わせて使用されることが多い.Reflect.field:
属性値相関を取得するには、get
を呼び出して値を取得する必要があります.Reflect.set:
プロパティ関連を設定します.ReflectException:
Javaに対して様々な異常を反射するパッケージは、unchecked
異常に属し、文法的に明示的にキャプチャする必要はないが、実際の状況に応じて明示的にキャプチャするかどうかを決定する必要がある.本文は転載して1つの簡略化の反射の操作のコードの優雅な書き方を推薦します