0
クラスjava.lang.reflect.Field
のオブジェクトfield
があるとします。オブジェクトo1
のフィールドの値をo2
のフィールドの値に変更することができます。field.set(o1, o2)
。私はそれがいくつかのライブラリ、例えばcglibの助けを借りてより速く実行できるかどうか疑問に思っていますか?cglibを使用してフィールド値を変更します
クラスjava.lang.reflect.Field
のオブジェクトfield
があるとします。オブジェクトo1
のフィールドの値をo2
のフィールドの値に変更することができます。field.set(o1, o2)
。私はそれがいくつかのライブラリ、例えばcglibの助けを借りてより速く実行できるかどうか疑問に思っていますか?cglibを使用してフィールド値を変更します
いいえ、JVMはJITコンパイラを実装しているため、99.9%のパフォーマンスでバイトコードの生成が廃止されています。リフレクションの場合、リフレクションAPIが意味するセキュリティチェックを避けるために、コード生成を使用することがあります。そうではなく、MethodHandle
を調べて、このセキュリティチェックをハンドル作成に移動し、各呼び出しでトリガーされないようにする必要があります。