クラスにメソッドがあり、このクラスを使用してjarファイルが作成されます。 jarファイルはプロジェクトに含まれています。アプリケーションでこのメソッドをオーバーライドするにはどうすればよいですか?助けてくださいjarファイルのメソッドをオーバーライドする方法は?
答えて
@パブロ・サンタクルスは正しい(+1):既存のコードを変更することはできません。既存のクラスを継承し、サブクラスで必要なものをオーバーライドする必要があります。
しかし、実際には既存のコンパイル済みモジュールで何かを変更したい場合は、バイトコード変更技術を使用して変更することができます。これを行うことができるパッケージがたくさんあります。 Java AspectJのためのアスペクト指向のパラダイムを実装する人気の高い上位パッケージも役に立ちます。
しかし、私はあなたが本当にこれを必要としないと信じています。
JARの中でクラスをサブクラス化し、メソッドをオーバーライドする必要があります。ソースコードを変更して再コンパイルしない限り、既存のJavaクラスのメソッドを "変更"する方法はありません。
完全性のために:技術的に、そのクラス(Javaエージェント、負荷時間ウィービングなど)を変更することはできますが、この初心者レベルで質問する人にはお勧めできません。 –
@Sean:ありがとう!それを知らなかった。 Javaエージェント、ロード時間ウィービングなどを見て読んでみましょう。 –
現在の動作を「パッチ」することを意味する場合は、既存のJavaファイルをコピーし、オーバーライドするメソッドを更新し、その.classをCLASSPATHに先に置く必要があります。
クラスから継承してオーバーライドする(つまり多態的な観点から)メソッドをオーバーライドする場合は、クラスが最終的なものでない限り、他の方法と同様に継承することができます。
jarファイル自体の内部でメソッドの動作を変更する場合は、ソースを取得し、メソッドを自分で変更してから再コンパイルし、別のjarファイルに再パッケージする必要があります。しかし、実際にはjarが一般的なライブラリjarである場合は、特にこの方法をお勧めしません。後であなたのコードを管理する人は、ライブラリクラスの動作が変更された場合、本当に混乱したり、ハックされたりします。
ソースがない場合は、バイトコードをハックしてそのようにすることができます。しかし、私はそれはあなたがすでにロードされたクラスのメソッドをオーバーライドすることを考えている場合は
:-)ここで必要なものではないかなり確信していますし、このJava reflection: How do I override or generate methods at runtime?
- 1. Node.jsのメソッドをオーバーライドする方法は?
- 2. uploadifiveメソッドをオーバーライドする方法は?
- 3. JARファイルを検出する方法は?
- 4. Proguardをjarファイル内のjarファイルに難読化する方法
- 5. 実行時にjarファイルからメソッドを呼び出す方法
- 6. コンストラクタでスーパークラスのメソッドをオーバーライドするメソッドを選択する方法は?
- 7. javaの "equals()"メソッドをオーバーライドする方法はありますか?
- 8. 既存のオブジェクトのメソッドをオーバーライドする方法は?
- 9. odooの関数フィールドのメソッドをオーバーライドする方法は?
- 10. remove_columnメソッドのrailsの移行をオーバーライドする方法は?
- 11. ラップされたクラスのメソッドをオーバーライドする方法は?
- 12. NopCommerceプラグインでコントローラーやそのメソッドをオーバーライドする方法は?
- 13. Vue.jsのプロパティとメソッドをオーバーライドする適切な方法は?
- 14. GridViewのOnItemDataBoundメソッドをオーバーライドする方法は?
- 15. 別のアセンブリでメソッドをオーバーライドする方法は?
- 16. dojox _Scrollerクラスのメソッドをオーバーライドする方法は?
- 17. UINavigationBarのdrawRectメソッドを動的にオーバーライドする方法は?
- 18. createUserWithEmailAndPasswordメソッドの例外をオーバーライドする方法は?
- 19. マゼンタでproduct.jsファイルをオーバーライドする方法
- 20. HTML - .JARファイルをリンクする方法
- 21. SiestaでtestClassメソッドをオーバーライドする方法は?
- 22. CursorAdapterからgetItemId(int pos)メソッドをオーバーライドする方法は?
- 23. Djangoでmodel.Manager.create()メソッドをオーバーライドする方法は?
- 24. 実行時にFormControlメソッドをオーバーライドする方法は?
- 25. Junitテストで静的メソッドをオーバーライドする方法は?
- 26. Javaのjarファイルのクラスの保護されたメソッドにアクセスする方法
- 27. C#:このメソッドをオーバーライドする方法を構造化する方法
- 28. WPFのCanvasクラスのChildren.Addメソッドをオーバーライドする方法
- 29. 既存のバックボーンモデルのメソッドをオーバーライドして他のメソッドを維持する方法
- 30. 別のjavascriptファイルの関数をオーバーライドする方法は?
あなたが正確に何を意味するのかを見て?あなたは通常、サブクラスを作成し、通常通りメソッドをオーバーライドします... –
私は彼/彼女は既存のメソッドを変更することを意味すると思います。確かにわかりません... –