JAVA:如何检查对象数组中的所有对象是否是子类的对象?

时间:2015-06-30 15:16:50

标签: java arrays

我有一个带对象的数组。现在我想检查所有这些对象是否是MyObject的实例。

更好选项是否

boolean check = true;
for (Object o : justAList){
  if (!(o instanceof MyObject)){
    check = false;
    break;
  }
}

3 个答案:

答案 0 :(得分:6)

如果您不喜欢循环,可以在Java 8中始终执行此操作:

使用ArrayList

List<Object> justAList = new ArrayList<>();
// Add items here...
return justAList.stream().allMatch(o -> o instanceof MyObject);

使用普通数组

Object[] justAList = new Object[10];
// Set items here...
return Arrays.stream(justAList).allMatch(o -> o instanceof MyObject);

修改

如果您希望提高代码可读性和/或使其更简洁,上述建议将对您有用。但不要以为它避免了必须执行循环。它仍将执行循环,你只是不会看到它。所以不要指望这比你已经拥有的更好。

答案 1 :(得分:1)

它可能与此特定问题无关,但使用多态而不是检查if条件中的类型是一种好习惯。像

 public void handle(MyObject object) {
   doSomething
 }
 public void handle(Object object) {
   doSomething
 }


 handle(o);

答案 2 :(得分:0)

根据您的要求,您可以首先使用List<MyObject>和其他类型的列表,而不是Object - 放置所有内容的数组。