2015-06-30 57 views
2

我得到了一个数组与对象。现在我想检查所有这些对象是否是MyObject的实例。JAVA:如何检查对象数组中的所有对象是否是子类的对象?

是否有更好的选项

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

定义“更好”? –

+0

你还可以提供示例数组吗? – Colin

+0

@ChrisSprague idk,我不想在那里有一个循环,因为我再次循环它。 – inetphantom

回答

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); 

编辑:

如果你想也许提高代码的可读性和/或使其更简洁以上建议只会对你有用。但不要认为它避免了必须执行循环。它仍然会执行一个循环,你只是不会看到它。所以不要指望这比你现有的更好。

+0

你加什么样的清单?尝试对象[]列表,没有工作.. – inetphantom

+1

好吧,你说'列表',所以我假设你正在使用'ArrayList'。我将编辑我的帖子,为您提供'ArrayList'版本和'array'版本。 **编辑:**对不起,我只是注意到,您的文章的文字确实说数组:)这将有助于包括在您的代码中的类型,虽然。 – sstan

0

根据您的要求,您可以在第一个地方使用List<MyObject>和其他列表及其各自的类型,而不是使用Object的其他列表。

1

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

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


handle(o); 
相关问题