String
のまたはObject[]
を返すメソッドですが、String[]
でキャストしている場合は、単一の文字列が含まれているとクラスキャスト例外が発生しています。どうすればこの問題を解決できますか?オブジェクトがJavaでStringかString Arrayかどうかをチェックする方法は?
String
またはString[]
が含まれているかどうかを確認する方法はありますか?
String
のまたはObject[]
を返すメソッドですが、String[]
でキャストしている場合は、単一の文字列が含まれているとクラスキャスト例外が発生しています。どうすればこの問題を解決できますか?オブジェクトがJavaでStringかString Arrayかどうかをチェックする方法は?
String
またはString[]
が含まれているかどうかを確認する方法はありますか?
確かに、instanceof
operatorを使用します。
if (x instanceof String) {
...
}
if (x instanceof String[]) {
...
}
それは、これを実行する必要が理想的ではないですが、あなたの心...あなたがこれを避けるために、あなたのAPIを再設計することができどのような方法はありますか?
1つしかない場合でも、常にString[]
を返すようにメソッドを書き換えます。
さらに、List<String>
を返し、単一要素の場合はCollections.singletonList()
を使用してください。
なぜそれは理想的ではありませんか? – Konerak
オブジェクトの向きの問題が原因です。 'instanceof'を使用するという事実は、この場合、「私のメソッドはすべての場合に' String [] 'を返すことができます(' String'は常に 'String [1]'に入れることができるので)しかし、私はそれを行うには十分スマートではなかったので、私は何かを返すようにして、あなたがそれに対処することをお勧めします。 – Riduidel
APIを変更する最も簡単な方法は、String []の代わりにString []を返すことです。 – extraneon