java8 Lambda

62 阅读1分钟

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.优点很多,值得学习. 缺点 : 增加调试难度