我有一个带对象的数组。现在我想检查所有这些对象是否是MyObject的实例。
更好选项是否:
boolean check = true;
for (Object o : justAList){
if (!(o instanceof MyObject)){
check = false;
break;
}
}
答案 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
- 放置所有内容的数组。