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 }