andThenDemo 和Predicate的函数式

 1 public class andThenDemo {
 2     // 该接口对应的方法类型为接收一个参数,没有返回值,可以通俗的理解成将这个参数'消费掉了'
 3     // 一般来说使用Consumer接口往往伴随着一些期望状态的改变或者事件的发生,例如最典型的forEach就是使用的Consumer接口,
 4     // 虽然没有任何的返回值,但是却向控制台输出了语句。
 5     public static void changeAlpha(Consumer<String> consumer1,Consumer<String> consumer2){
 6         consumer1.andThen(consumer2).accept("guhanwen");
 7     }
 8 
 9     public static void main(String[] args) {
10         changeAlpha(new Consumer<String>() {
11             @Override
12             public void accept(String s) {
13               char[] as = s.toCharArray();
14                 for (char a:as) {
15                     if ('a'<a&&a<'z'){
16                         a-=32;
17                     }
18                 }
19             }
20         }, new Consumer<String>() {
21             @Override
22             public void accept(String s) {
23                 char[] as = s.toCharArray();
24                 for (char a:as) {
25                     if ('A'<a&&a<'Z'){
26                         a+=32;
27                     }
28                 }
29             }
30         });
31     }
32 }
PredicateDemo
 test() 中传入的就是在匿名类中实现时候的String s 的值
 1 public class PredicateDemo {
 2     // 这个相当于定义了一个Predicate 的接口函数,其中函数中有唯一实现的方法,
 3     // 方法的具体实现,用到的是匿名内部类中的方法实现
 4     public static void predicate(Predicate<String>  predicate1,Predicate<String> predicate2){
5 predicate1.and(predicate2).test("gugu"); 6 } 7 8 public static void main(String[] args) { 9 predicate(new Predicate<String>() { 10 @Override 11 // 方法的具体实现,用到的是匿名内部类中的方法实现,在这个匿名内部类中,会写出实现逻辑 12 public boolean test(String s) { 13 if (s.length()>5){ 14 return true; 15 } 16 return false; 17 } 18 }, new Predicate<String>() { 19 @Override 20 // 用增强for循环的方式,读取所有的字符串中的值, 21 // 然后再依次判断,逻辑中的判断条件 22 public boolean test(String s) { 23 char[] as = s.toCharArray(); 24 for (char a: as) { 25 if ('0'<a&&a<'9'){ 26 return true; 27 } 28 } 29 30 return false; 31 } 32 }); 33 } 34 }

 

上一篇:对象不支持find属性或方法


下一篇:python – 查找与谓词匹配的序列中的第一个元素