2016-06-13 7 views
1

私は以下の方法で入力としてvarargsを渡します。私はHeapPollutionを避けようとしているので、Suppresswarningsで注釈を付けるだけでなく、私のバリ変数のすべてのクラスのクラスがクラスの同じクラスまたは子孫クラスであることを確認したいと思っていました。私の問題は、クラスが一致しないとわかったら、私はfalseを返すことです。 ForEachメソッドを使用すると、返り値を返すだけで、返り値を返すことができます。ForEachループからFalseを返すことで直接終了する方法はありますか?ForEachを学習しているので、 - )]しかし、私がForEachメソッドとラムダ式で望むものを達成する。方法はありますか?ForEachのJavaメソッドから値を返す方法8

ご協力いただきありがとうございます!

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を使用せず、ストリームとラムダ式を使用します。

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