Javaを使用して、文字列を返すmethod.invokeで呼び出しているメソッドがあります。Method.invokeは、Stringにキャストできないオブジェクトを返します。オブジェクトを文字列として使用するにはどうすればよいですか?
リフレクションに関するドキュメントでは、次のように示されています。
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);
}
編集:以下の回答に従って、検証に問題がありました。