Predicate類包含5個(gè)方法,最重要的是test方法,這是一個(gè)抽象方法计济,需要編程者自己去Override,其他的三個(gè)default方法里都使用到了這個(gè)方法排苍,這三個(gè)方法分別是and方法沦寂,negate方法和or方法,其中and和or方法與前面兩個(gè)類的andThen方法類似淘衙,這兩個(gè)方法都接受另一個(gè)Predicate對象作為參數(shù)传藏,and方法返回這兩個(gè)對象分別調(diào)用test方法之后得到的布爾值的并,相當(dāng)于predicate1.test() && predicate2.test(),or方法返回這兩個(gè)對象分別調(diào)用test方法之后得到的布爾值的或毯侦,相當(dāng)于predicate1.test() || predicate2.test()哭靖。negate方法是取反predicate1.negate()。
test例:
public static void main(String[] args) {
Predicate<Integer> predicate = s->s==1;
System.err.println(predicate.test(1));
}
執(zhí)行結(jié)果:
true
and例:
//判斷一個(gè)整數(shù)大于5并且是偶數(shù)(兩個(gè)條件同時(shí)滿足)
public static void main(String[] args) {
Predicate<Integer> predicate = s-> s>=5;
Predicate<Integer> predicate1 = s -> s%2==0;
System.out.println(predicate1.and(predicate).test(7));
System.out.println(predicate.and(predicate1).test(8));
}
執(zhí)行結(jié)果:
false
true
or例:
//判斷一個(gè)整數(shù)大于等于5或是偶數(shù)(滿足一個(gè)條件即可)
public static void main(String[] args) {
Predicate<Integer> predicate = s->s>=5;
Predicate<Integer> predicate1 = s -> s%2==0;
System.out.println(predicate1.or(predicate).test(4));
System.out.println(predicate.and(predicate1).test(8));
}
執(zhí)行結(jié)果:
true
true
negate例:
//判斷一個(gè)整數(shù)是否大于等于5(取反)
public static void main(String[] args) {
Predicate<Integer> predicate = s->s>=5;
System.out.println(predicate.negate().test(6));
}
執(zhí)行結(jié)果:
false