2016-06-13 54 views
1

我有下面的方法來傳遞可變參數作爲輸入。我試圖避免HeapPollution,所以除了使用Suppresswarnings進行註釋外,我還想確保我驗證每個參數的類都是相同的,或者是類的後代。我的問題是,如果我發現類不匹配我想返回false;使用ForEach方法(只返回無效,我可以做一個返回。有沒有辦法通過返回false直接從我的ForEach循環退出?我不想使用增強的For循環[因爲我正在學習forEach: - )]但實現我想要的ForEach方法和lambda表達式。有沒有辦法?如何從Java 8的ForEach方法中返回一個值

感謝您提供的任何幫助!

public final <T> boolean exists(T valueToCheck, @SuppressWarnings("unchecked") T... listOfPossibleValues) { 
    if (valueToCheck == null) return false; 
    Arrays.asList(listOfPossibleValues).forEach((T value) -> 
{ if (!(valueToCheck.getClass().isAssignableFrom(value.getClass()))) return;   else System.out.println(value.getClass()); }); 
    for (T value : listOfPossibleValues){ 
     if (value != null) { 
      if (value.equals(valueToCheck)) return true; 
     } 
    } 
    return false; 
} 

回答

1

我做了以下,我認爲這解決了我的目的。 Ofcourse不使用ForEach,但使用流和lambda表達式。

 return Arrays.asList(listOfPossibleValues).stream().filter(value -> !(valueToCheck.getClass().isAssignableFrom(value.getClass()))).collect(Collectors.toList()).size() > 0; 
相關問題