Javaは反射操作コードを簡略化する優雅な書き方をお勧めします

1754 ワード

Javaで反射する書き方や関連サードパーティパッケージライブラリは多いですが、筆者は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は主にReflectReflectExceptionを提供し、具体的には以下の通りである.
  • 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つの簡略化の反射の操作のコードの優雅な書き方を推薦します