1.语法格式
泛型接口:
@FunctionalInterface
public interface Test {
T run(T x, T y);
}
其中@FunctionalInterface可以解决编译错误,即自定义接口,接口预期只能含一个方法(run).T 是参数类型,可以是Integer, Double,String...
语法格式:(我仅以最基础的为例)
Test count = (x, y) -> {
int ans = x + y;
return ans;
};
System.out.println(count.run(2,3));
使用Lambda语句遍历:
List names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));
使用Lambda实现内部类:
Runnable runnabl1 = new Runnable() {
@Override
public void run() {
System.out.println("Java");
}
};
Runnable runnable2 = ()->{
System.out.println("Java");
};
2.行为参数化
public interface BookPredictate{
public boolean test(Book book);
}
声明了一个接口,当一个类实现BookPredictate接口时,必须实现test 方法,实现了这个接口的类,可以根据不同
标准过滤筛选Book对象,每个类提供不同的test方法.
浅浅示例一下:
1.根据作者筛选,使用内部类实现
List result = filter(books, new BookPredicate() {
@Override
public boolean test(Book book) {
return author.equals(book.getAuthor());
}
});
2.根据图书价格筛选
List result = filter(books, new BookPredicate() {
@Override
public boolean test(Book book) {
return price.equals(book.getPrice());
}
});
last.优点很多,值得学习. 缺点 : 增加调试难度