一个方法返回类型为
有没有办法检查它包含的是
String
的Object
或Object[]
,但如果我使用String[]
进行强制转换,当它包含单个字符串时,会抛出类转换异常。如何解决这个问题?有没有办法检查它包含的是
String
还是String[]
?String
的Object
或Object[]
,但如果我使用String[]
进行强制转换,当它包含单个字符串时,会抛出类转换异常。如何解决这个问题?String
还是String[]
?可以使用 instanceof
运算符:
if (x instanceof String) {
...
}
if (x instanceof String[]) {
...
}
等等,这并不是理想的做法...你有没有办法重新设计你的API以避免这种情况?
将该方法改写为始终返回String[]
,即使只有一个元素。
更好的做法是让它返回List<String>
,并在只有一个元素的情况下使用Collections.singletonList()
。
instanceof
的事实相当于在说:“在所有情况下,我的方法都可以返回String[]
(因为String
总可以放在String[1]
中),但是因为我不够聪明,所以我宁愿返回任何东西并让你来处理。” - Riduidel