このプロジェクトでは、実行時にクラスを拡張しようとしています。 私が知りたいことは、これも可能ですか?もしそうなら、どうすればいいのですか?これらの事のためにライブラリがありますか?実行時にクラスを拡張する
答えて
CGLibは、あなたが探しているライブラリです。実行時にクラスを拡張したりインタフェースを実装するのは非常に強力なので、SpringやHibernateのような多くの一般的なフレームワークがこれを使用しています。あなたはおそらく、所望の論理で有用な方法インターセプターとNoOp
コールバックを交換するだろうが
あなたは
public Object createProxy(Class targetClass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(targetClass);
enhancer.setCallback(NoOp.INSTANCE);
return enhancer.create();
}
のようなコードを使用して、クラスの拡張機能を作成することができます。
素晴らしいです、ありがとう! – PaulBGD
答えは、「クラスを拡張する」という意味によります。 Javaの「extend」は、最初のクラスを拡張する別のクラスを宣言することを意味します(サブクラスです)。したがって、指定されたクラスのサブクラスを作成したい場合は、これが可能です。サブクラスを表すバイト配列を準備し、クラスローダに渡します。
既存のクラスにフィールドまたはメソッドを追加する場合、これはこのクラスがロードされているときにのみ可能で、バイト配列表現を置き換えることによって実行されます。クラスが既にロードされている場合は、それを変更することはできません。
私は、どのクラスを拡張するかを動的に選択することを考えていました(クラスへのクラスパスが絶えず変わるので)。 – PaulBGD
- 1. 実行時にNHibernateクラスを拡張/変更する
- 2. 実行時にC#コード拡張をコンパイル
- 3. 実行時にJavaで新しいクラスを拡張または追加する
- 4. 実行時にXSDで複合型を拡張する
- 5. 実行時にPython拡張モジュールをコンパイルする
- 6. Serializableを実装するクラスの拡張
- 7. Djangoは実行時にカスタムマネージャを拡張します。ミックスインスタイル?
- 8. クラス内でプロトコルを実装するクラスを拡張する
- 9. sqlを実行するビジュアルスタジオ拡張
- 10. PsCredentialクラスを拡張する
- 11. PHP:クラスを拡張する
- 12. クラスを拡張するクラスと実装インターフェイス
- 13. UWP ExtendedExecutionエラー拡張実行
- 14. firefox拡張ステータスバーオーバーレイ実行
- 15. 拡張時に独自の型を反復するJavaクラス
- 16. Firefox拡張:ページ読み込み時に実行
- 17. HadoopのMapperを拡張するクラスを拡張する
- 18. 実行時に特性を拡張するスカラクラスを呼び出す
- 19. クラス情報を実行時にアクセス可能にする拡張可能な方法
- 20. 私は実行してUIViewクラスを拡張したいスウィフト
- 21. 実行時にスカラで実行時にクラスを取得する
- 22. Android:アンドロイドカスタムビューのクラス(LinearLayoutの拡張版)をダウンロードし、実行時にインスタンス化することは可能ですか?
- 23. UIComponent拡張クラスにUIComponent拡張クラスが表示されない
- 24. 拡張クラス
- 25. PHPクラス拡張
- 26. デルファイ拡張クラス
- 27. C++クラス拡張
- 28. Intellij-idea - Groovyクラスの拡張時にエラーが発生する
- 29. クラスはクラスを拡張してインターフェイスを実装できます
- 30. TypeScriptでクラスを拡張するには?
なぜあなたはそれをしたいですか?ユースケースを明確にしてください。私はそれが可能かどうか疑問に思う。 –