我得到了一个数组与对象。现在我想检查所有这些对象是否是MyObject的实例。JAVA:如何检查对象数组中的所有对象是否是子类的对象?
是否有更好的选项比这:
boolean check = true;
for (Object o : justAList){
if (!(o instanceof MyObject)){
check = false;
break;
}
}
我得到了一个数组与对象。现在我想检查所有这些对象是否是MyObject的实例。JAVA:如何检查对象数组中的所有对象是否是子类的对象?
是否有更好的选项比这:
boolean check = true;
for (Object o : justAList){
if (!(o instanceof MyObject)){
check = false;
break;
}
}
如果你不喜欢的循环,你总是可以做到这一点在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);
编辑:
如果你想也许提高代码的可读性和/或使其更简洁以上建议只会对你有用。但不要认为它避免了必须执行循环。它仍然会执行一个循环,你只是不会看到它。所以不要指望这比你现有的更好。
你加什么样的清单?尝试对象[]列表,没有工作.. – inetphantom
好吧,你说'列表',所以我假设你正在使用'ArrayList'。我将编辑我的帖子,为您提供'ArrayList'版本和'array'版本。 **编辑:**对不起,我只是注意到,您的文章的文字确实说数组:)这将有助于包括在您的代码中的类型,虽然。 – sstan
根据您的要求,您可以在第一个地方使用List<MyObject>
和其他列表及其各自的类型,而不是使用Object
的其他列表。
它可能与此特定问题无关,但最好使用多态而不是在if
条件中检查类型。像
public void handle(MyObject object) {
doSomething
}
public void handle(Object object) {
doSomething
}
handle(o);
定义“更好”? –
你还可以提供示例数组吗? – Colin
@ChrisSprague idk,我不想在那里有一个循环,因为我再次循环它。 – inetphantom