2018-08-13通过行为参数化传递代码

行为参数化

  • 就是一个方法接收多个不同的行为作为参数,并在内部使用它们,完成不同行为的能力。

使用Lambda表达式

public interface Predicate<T> {
    boolean test(T t);
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AppleTest {

    public static <T> List<T> filter(List<T> list, Predicate<T> p) {
        List<T> result = new ArrayList<T>();

        for (T t : list) {
            if (p.test(t)) {
                result.add(t);
            }
        }

        return result;
    }

    public static void main(String[] args) {
        List<Apple> apples = Arrays.asList(new Apple("red", 100),
                new Apple("green", 200));

        List<Apple> apples1 = filter(apples, (Apple apple) -> "red".equals(apple.getColor()));
        for (Apple a : apples1) {
            System.out.println(a.getColor());
        }

        List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        List<Integer> filter = filter(numbers, (Integer i) -> i % 2 == 0);
        for (Integer i : filter) {
            System.out.println(i);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容