如何在java中检查Object是String还是String Array?

Sha*_*k T 11 java

一个方法返回一个ObjectObject[]一个类型String但是如果我正在使用String[]它,它在包含单个字符串时给出类强制转换异常.我该如何解决这个问题?

有没有办法检查它是否包含StringString[]

Jon*_*eet 24

当然,使用instanceof运营商:

if (x instanceof String) {
  ...
}

if (x instanceof String[]) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

等等,这是不理想的.请注意......有什么方法可以重新设计你的API来避免这种情况吗?

  • 由于面向对象的顾虑.在这种情况下,使用`instanceof`的事实相当于说"我的方法在所有情况下都可以返回`String []`(因为`String`总是可以放在`String [1]`中) ,但由于我不够聪明,我更喜欢退货,让你应付它." (3认同)
  • 为什么不理想? (2认同)

Mic*_*rdt 7

重写方法总是返回String[],即使只有一个方法.

更好的是,让它返回List<String>Collections.singletonList()用于单元素的情况.