質問: ### 前提・実現したいこと String配列から値をひとつずつ取得して、ModelClassのSetterに詰め替えたいのですが、 処理が単調で長くなるので短くしたいです。(100項目ほどあります。) for文などで考えてみたのですがうまくいきません。 ご教示いただけると幸いです。 よろしくお願い致します。 ### ソースコード ``` model.setItem001(cols[0]); model.setItem002(cols[1]); model.setItem003(cols[2]); model.setItem004(cols[3]); model.setItem005(cols[4]); model.setItem006(cols[5]); model.setItem007(cols[6]); model.setItem008(cols[7]); model.setItem009(cols[8]); model.setItem010(cols[9]); model.setItem011(cols[10]); ```
回答: Setterメソッドのループ、可能です。 それにはリフレクションという手法を用います。 ``` Class> modelClass = model.getClass(); ``` これでmodelインスタンスの型情報が取れますので、 ``` Method[] modelMethods = modelClass.getMethods(); ``` としてメソッド情報を配列で取ります。 Methodオブジェクトはメソッドの名前から引数構成からなんでも持っていて、もちろんinvokeメソッドで実行できますので、ご希望の処理が書けるはずです。