- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Stringの値で型キャストしたい(Java))
JavaでString型を型キャストする方法
このQ&Aのポイント
- JavaのString型を型キャストする方法について教えてください。
- 配列(Vector)に入っている要素のクラス名を取得し、それに応じて型キャストしたい場合、どのようにすれば良いでしょうか?
- String型の値を使って型キャストする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Integer型の引数を取るmethod()とか、他の型の引数を取るmethod()がいくつもあって、質問文にあるような条件分岐の代わりに method(objをキャストしたもの); と1行書くだけで適切な型を引数に取るmethod()を呼んでくれるものを期待しているのでしょうか。 そうだとしたらJavaでは無理です。 Javaではメソッド呼び出しのときにメソッド名とその引数の型が静的に決まっている必要があるので、どの型の引数になるのかが実行時まで分からないようなメソッド呼び出しはできません。 逆に、そのVectorに入る可能性のあるオブジェクトのクラス全てが共通のクラスかインタフェースを親に持っていれば obj.method(); と書くだけでobjの型によってメソッドを呼び分けることが可能です。 元の書き方を改良するなら、クラス名を取得してequals()で比べるより、instanceofで確認するほうが効率的です。
お礼
ご回答ありがとうございます。 >method(objをキャストしたもの); と1行書くだけで適切な型を引数に取るmethod()を呼んでくれるものを期待しているのでしょうか。 そうです。質問タイトルには、「Stringの値で型キャストしたい」となっていますが、最終的な目的はそうです。 他の方法まで考えていただきありがとうございます。 obj.method(); の方法はおそらく、実際に自分がやろうとしているプログラムではできないです。質問内のプログラムはメソッドの引数が1つですが、実際は2つのobjを引数にとるので、私の知識ではobj.method()を使ってもできません。 >元の書き方を改良するなら、クラス名を取得してequals()で比べるより、instanceofで確認するほうが効率的です。 ありがとうございます。 ここの部分も、「非効率だな~」って思っていて、「なにか良い方法があったら」と思っていたので、助かりました。