我有一个名为isValidDataStreams
的方法,我正在检查我的DataStream
集合中的任何成员是否违反isNotEmpty
中的检查。
public class MyClass {
private Collection<DataStream> DataStreams;
/* checking ManifestTemplate/DataStreams */
public boolean isValidDataStreams()
{
if ( getDataStreams().isEmpty() )
return false;
for( DataStream dataStream : DataStreams )
{
if ( DataStream == null ||
!isNotEmpty(DataStream.getAlias() ) ||
!isNotEmpty(DataStream.getFilePath() ) ) {
return false;
}
}
return true;
}
}
public class DataStream {
private String alias;
private String filePath;
}
我觉得这段代码看起来有些难看。是否可以使用lambdas并使这段代码看起来更好,类似于
List<String> test = Arrays.asList("a", "b", null, "c", "d");
if (test == null) {
return;
}
if (test.stream().anyMatch( x -> { System.out.println( x ); return x == null; } ) )
{
System.out.println( "dsaflasdk" );
}
我试着按如下方式替换它。
public boolean isValidDataStreamsLambda()
{
if ( getDataStreams().isEmpty() )
return false;
if(dataStreams.stream().anyMatch( x -> {!isNotNullAndEmpty(x.getAlias() ) ||
!isNotNullAndEmpty(x.getFilePath())} ))
{
return false;
}
return true;
}
但它给了我以下错误
不能抛出boolean类型的异常;必须是异常类型 Throwable的子类
答案 0 :(得分:0)
一种方法来检查存储在列表中的所有DataStream对象是否正确设置了它们的值“ alias”和“ filePath”:
public static boolean isValidDataStreamsLambda(List<DataStream> dataStreamList) {
return dataStreamList.stream()
.filter(d-> d != null && d.getAlias() != null && d.getFilePath() != null && !d.getAlias().isEmpty() && !d.getFilePath().isEmpty())
.count() == dataStreamList.size();
}