簡體   English   中英

JAVA:如何檢查對象數組中的所有對象是否是子類的對象?

[英]JAVA: How to check if all in objects array are objects of a subclass?

我有一個帶對象的數組。 現在我想檢查所有這些對象是否是MyObject的實例。

有沒有比這 更好的選擇:

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

編輯:

如果您想提高代碼可讀性和/或使其更簡潔,上述建議將對您有用。 但不要以為它避免了必須執行循環。 它仍將執行循環,你只是不會看到它。 所以不要指望這比你已經擁有的更好。

它可能與此特定問題無關,但使用多態而不是在if條件中檢查類型是一種好習慣。 喜歡

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


 handle(o);

根據您的要求,您可以首先使用List<MyObject>和其他列表及其各自的類型,而不是使用Object -Array放置所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM