
Webアプリ上でリフレクションにてとあるクラスのメソッドを実行するサンプルを作成して
見たのですがうまく動きませんでした。最後のmethod.invoke()の処理にてExceptionが発生し、
java.lang.IllegalArgumentException: object is not an instance of declaring class
と表示されてしまいます。
作成したサンプルは下記なのですがどこが原因かお分かりになりますでしょうか。
try {
Class cls = Class.forName("dao.TestDao");
// 引数の型をセット
Constructor constructor = cls.getDeclaredConstructor(HttpSession.class);
constructor.setAccessible(true);
// 引数を渡してオブジェクトを生成
Object obj = constructor.newInstance(session);
Method method = cls.getDeclaredMethod("getDataDao", int.class);
method.setAccessible(true);
Object result = method.invoke(cls, new Integer(100));
} catch (Exception e) {
e.printStackTrace();
}
// このクラスのgetDataDao()をリフレクションにて実行
public class TestDao {
HttpSession session = null;
public TestDao(HttpSession session)
{
this.session = session;
}
public List<String> getDataDao(int iNo) {
List<String> list = new ArrayList<String>();
list.add((String)session.getAttribute("1"));
list.add((String)session.getAttribute("2"));
list.add((String)session.getAttribute("3"));
list.add((String)session.getAttribute("4"));
list.add((String)session.getAttribute("5"));
return list;
}
}
No.2ベストアンサー
- 回答日時:
あなたはそうなってほしいと思っているのかもしれませんが, 残念ながら質問にあがっているプログラムはその意図にそっていません.
「リフレクションを使わない場合」の test に対応するオブジェクトは, リフレクションを使った場合のどれですか?
>>「リフレクションを使わない場合」の test に対応するオブジェクトは, リフレクションを使った場合のどれですか?
ご回答ありがとうございます。
「リフレクションを使わない場合」の test に対応するオブジェクトは
Object obj = constructor.newInstance(session);
で取得したobjであるため
method.invoke(obj, new Integer(100));
としたところ実行できました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
Java
-
型Containerのメソッドadd(S...
-
a href="..." とServlet
-
内部クラスのインスタンスを外...
-
リフレクション
-
C# インターフェイスの実装
-
Java リフレクションについて
-
visual studioのデザイナ画面で...
-
ネストしたenumへのリフレクシ...
-
C#にて別クラスの関数を使いたい
-
構造 他のクラスの構造体を別...
-
c++,ある関数のクラスから別の...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
中学のクラス数
-
0歳児の指しゃぶりに関して
-
スーパークラスからサブクラス...
-
変数名の付け方
-
標準モジュールとクラスモジュ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
クラス間でのデータ参照
-
c++,ある関数のクラスから別の...
-
Java リフレクションについて
-
import と extends について
-
C# インターフェイスの実装
-
構造 他のクラスの構造体を別...
-
範囲外の数値を代入したらエラ...
-
C#でほかのファイルにある自作...
-
C#のクラスライブラリでメッセ...
-
親クラスから子クラスへアクセス。
-
Tomcatのpropertiesファイルの...
-
java-別クラスの変数の使い方を...
-
C++でfriendクラスにしているの...
-
継承したクラス側のクラス名の取得
-
dynamic_castの必要性
-
ネストしたenumへのリフレクシ...
-
Java
-
ASP Pageの孫継承のPage_Load
おすすめ情報