Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(読み込まれているクラスを置き換える方法)
閲覧数:562
掲示板(読み込まれているクラスを置き換える方法)
名前
匿名
題名 読み込まれているクラスを置き換える方法
質問内容

質問を評価する
(0ポイント)
あるシステムがありクラスを実行時に置き換える方法を模索しています。

あくまで例ですが
Mainクラスと複数のSubクラスがあり
ほとんどのSubクラスからJREのIntegerクラスのparseIntメソッドを呼び出しているとします。

ある仕様変更によりparseIntメソッド内部で処理を追加するといった事をやる事となりました。
※引数や戻り値に型は変更していません。

今回の改修では最小限の修正に留めたいため(というよりも顧客側からの制限で修正できない。)、
IntegerクラスのExtendsした拡張クラス(ExtIntegerクラス)を作成し、
SubクラスからExtIntegerのparseIntメソッドを呼ぶという方法ではなく
MainクラスでIntegerクラスとExtIntegerクラスを置き換える処理を実装しSubクラス等には手をいれれずに
自動的(言い方が変かもしれませんが)にExtIntegerクラスのparseIntメソッドが呼ばれるようにしたい所です。

いろいろと試してみてはいるのですが、どうも実現できません。

何かいい方法等あればご教授頂きたいのです。
宜しくお願い致します。
質問日時 2012-12-29 19:25:49
名前
匿名
回答内容

回答を評価する
(0ポイント)
Integerを継承してもstaticなparseIntには関係がないような。
まあ実際には自前クラスのインスタンスメソッドだとして。

クラスローダを自前で用意して代替くらすをロードすればい
いんじゃない?
回答日時 2012-12-30 00:20:59
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です。
回答ありがとうございます。

もちろん実際のクラスはIntegerクラスではありません。例という事で・・・

質問時点で、ClassLoaderでのロードはやってみているのですがうまくいってません。

ExtIntegerクラスをIntegerクラスとして読み込む方法とかあるんでしょうか?
回答日時 2012-12-30 08:12:30
名前
匿名
回答内容

回答を評価する
(0ポイント)
>うまくいってません
これを提示して、ダメ出ししてもらえば?
回答日時 2013-01-07 19:31:42

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道