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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
C++でfriendクラスにしているの...
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
関数内の変数に<summary>コメン...
-
継承したクラス側のクラス名の取得
-
C# log4netの使い方
-
C#にて別クラスの関数を使いたい
-
構造 他のクラスの構造体を別...
-
visual studioのデザイナ画面で...
-
a href="..." とServlet
-
アップキャスト、ダウンキャス...
-
親クラスから子クラスへアクセス。
-
C#のクラスライブラリでメッセ...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
オブジェクト指向プログラミン...
-
生成したインスタンスを削除す...
-
変数名の付け方
-
servletからjspへオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
C#でほかのファイルにある自作...
-
C++でfriendクラスにしているの...
-
java-別クラスの変数の使い方を...
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
ひとつのファイルにクラスは1つ?
-
Java
-
import と extends について
-
継承したクラス側のクラス名の取得
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
SwingでgetContentPaneのエラー...
-
アップキャスト、ダウンキャス...
-
C# インターフェイスの実装
-
visual studioのデザイナ画面で...
おすすめ情報