[解決済み] java.lang.IllegalArgumentException: Reflection 使用時の引数の型の不一致
2022-02-12 01:50:48
質問
以下は私のコードで、リフレクションを使ってメソッドを呼び出していますが、いつも次のような問題が発生します。 例外
List<PdAttrKey> attrKeys = new ArrayList<PdAttrKey>();
Properties adapterProps = new Properties();
PdReadRequest pdReadRequest = new PdReadRequest(1L, 1L, (short) 0, new Date(),
dataDurationSec, 2L, 3L, attrKeys, null, adapterProps);
PdAdapterUserReadOnlyGemsReader adapter1 = new PdAdapterUserReadOnlyGemsReader();
PdReader reader = adapter1.acquireReader(pdReadRequest);
UserCacheDoImpl userDos = Some Value;
Method method = getClassMethod("createPdRecordFromUserDO");
// This line is throwing me exception. And I don't know why?
PdRecord onePdsxRecord = (PdRecord) method.invoke(reader, userDos);
これは、あるクラスのすべてのメソッド名を取得する以下のメソッドです。
private Method getClassMethod(String methodName) {
Method method = null;
Method[] methodList = PdAdapterUserReadOnlyGemsReader.PdUserReadOnlyGemsReader.class
.getDeclaredMethods();
for (Method m : methodList) {
if (m.getName().equals(methodName)) {
method = m;
method.setAccessible(true);
break;
}
}
return method;
}
その他のコード:-)
private PdRecord createPdRecordFromUserDO(UserCacheDoImpl userCache) {
// Some code here
}
これは、私が得ている例外です。何か心当たりはありますか?
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:599)
何かご指摘があれば、大変助かります。
解決方法は?
createPdRecordFromUserDO"という名前のメソッドが複数存在しないか確認してください。 複数のメソッドが存在するように見えますが、引数が異なっています。
getClassMethod メソッドは最初に見つかったメソッドを返しますが、それは間違ったメソッドである可能性があります。 methodList.length > が1であれば、これがバグの原因であることを確認してください。
指定した名前のメソッドが複数見つかった場合にどうしたいかを再考してください。
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】-XX:MaxPermSizeは何をするのですか?
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。