• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンストラクターの生成でエラーが出ます。)

リフレクションを使ってDoubleのコンストラクターを呼び出すプログラムでエラーが出る

このQ&Aのポイント
  • リフレクションを使ってDoubleのコンストラクターを呼び出すプログラムでエラーが発生しています。NoSuchMethodExceptionがスローされ、Doubleクラスに引数がDouble型のコンストラクターが存在しないことが原因です。
  • 原因の一つは、createInstanceメソッドで引数の型を取得する処理が間違っていることです。引数の型を取得する際、引数のオブジェクトのgetClass()メソッドを使用する必要がありますが、現在は引数のオブジェクト自体のクラスを取得しています。
  • 解決策としては、createInstanceメソッドで引数の型を正しく取得するよう修正する必要があります。引数のオブジェクトの型を取得し、それを使用してコンストラクターを取得することで、正しいインスタンスが生成されるようになります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49428
noname#49428
回答No.1

原因は、エラーメッセージの通りです。 Doubleクラスには、Doubleを引数にもつコンストラクタがないからですね。 createInstanceで渡している「3.0」がAutoboxing機能によって暗黙的にDoubleクラスへ変換されるためです。 createInstanceの引数はObject型となってるため、プリミティブ型の引数は受取れませんね。 createInstanceメソッドをプリミティブも渡せるように汎用的にリファクタリングする手段が思いつきません。

noname#90015
質問者

お礼

ありがとうございます。

関連するQ&A