Javaを使用して、method.invokeで呼び出しているメソッドがあり、文字列を返します。 Method.invokeはStringにキャストできないオブジェクトを返します。 オブジェクトを文字列としてどのように使用するのですか?反射上のドキュメントでreflectionを使用しているときにmethod.invoke()から返されたオブジェクトを処理またはキャストする
それは次のことを示しています
Object o = m.invoke(t, new Locale(args[1], args[2], args[3]));
out.format("%s() returned %b%n", mname, (Boolean) o);
しかし、私のコードは、この、私は例外を取得ん:のjava.lang.Classはjava.lang.Stringで
にキャストすることはできませんこれは抽象クラスです。次にBeanの実装がいくつかあります。
Method[] methods = this.getClass().getMethods();
for (Method method : methods) {
if (isMethodGetter(method)) {
try {
Object message = method.invoke(this); // expect a string
Object message = method.invoke(this); // expect a string
if (message == null) {
// no messeage
} else {
logger.debug("Calling listAnswers: got an answer: "
+ message);
// create an answer object from the reflected
Answer answer = new Answer();
answer.setText((String)message);//cast as string
answerList.add(answer);
}
編集:以下の回答によると、私は検証に問題がありました。土曜日の紳士の仕事に戻ってくれてありがとう。
何も特別なことはありませんが、私はこの問題を抱えている他の人のために質問を編集します...多分私は面白いことをしています:) Method [] methods = this.getClass()。getMethods(); (メソッドのメソッド:メソッド)が \t \t { \t \t \t IF(isMethodGetter(メソッド)){ \t \t \t \t \t \t \t \t試み{ \t \t \t \t \tオブジェクトメッセージ= method.invoke(この); //文字列を受け取る – JasonG
別の表情があります - ありがとう! – JasonG
あなたは100%正しいです。私はログをチェックし、実際にgetClassがデバッグで表示されていることに気付いた。DEBUG [com.prevacidecrm.questionaire.model.Questionaire listAnswers] = listAnswersを呼ぶ:答えを得た:クラスcom.prevacidecrm.questionaire.model.impl.PerksEntryQuestionaire。素晴らしい - ありがとう。 – JasonG