java 8中有"instanceof"的替换吗?

use*_*emo 0 java oop java-8 java-stream

如何更改下面的代码在java 8中使用流来检查类型对象并进行转换?java 8还有其他选择吗?

private void fillObject(Object role, String issuingRange) {

        if (role != null) {
            List<String> rangeList2 = null;
            if (role instanceof ArrayList<?>) {
                rangeList2 = (ArrayList<String>) role ;
            } else if (role instanceof String) {
                rangeList2 = new ArrayList(Arrays.asList(role ));
            }
}
Run Code Online (Sandbox Code Playgroud)

Erw*_*out 5

"instanceof"的这种特殊用法的替代方案只是简单地有两种方法.

private void fillObject(ArrayList<String> role, String issuingRange) {
        ...
}
private void fillObject(String role, String issuingRange) {
        fillObject(new ArrayList(Arrays.asList(role)), issuingRange);
}
Run Code Online (Sandbox Code Playgroud)

  • 不要使用原始类型,你只需要为`new ArrayList <>(Arrays.asList(role))`输入两个以上字符``new ArrayList <>(Collections.singletonList(role))`更高效... (3认同)
  • 要正确格式化代码,请选择它并按编辑器中的"{}"按钮. (2认同)