import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* Consumer 就是花里胡哨的美化处理数据而已,传说中的语法糖
* @date 2019年7月26日 上午11:36:20
*/
public class ConsumerTest {
// 比如,我有一个 Book类
class Book {
private String bookName;
private Integer bookPrice;
/**
* @param bookName 书名
* @param bookPrice 定价
*/
public Book(String bookName, Integer bookPrice) {
super();
this.bookName = bookName;
this.bookPrice = bookPrice;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Integer getBookPrice() {
return bookPrice;
}
public void setBookPrice(Integer bookPrice) {
this.bookPrice = bookPrice;
}
@Override
public String toString() {
return "Book [bookName=" + bookName + ", bookPrice=" + bookPrice + "]";
}
}
public static void main(String[] args) {
// 在初始化时,不知哪位弟弟把 Book 价格设为了 1000,导致连续几年销量都是0
Book b = new ConsumerTest().new Book("Effective java", 1000);
System.out.println( " Befor, BOOK = " + b.toString());
//几年后,公司招了另一个程序员来检查为啥卖不出去,他便使用 consumer 修改了属性
Consumer<Book> consumer = book -> book.setBookPrice(50);
consumer.accept(b);
System.out.println( " After, BOOK = " + b.toString());
/**
* 优雅的处理集合
*/
List<Book> bookList = new ArrayList<Book>();
Book temp = null;
// 先伪造一个集合类
for(int i = 0; i < 10; i++) {
temp = new ConsumerTest().new Book("JAVA" + i, i);
bookList.add(temp);
}
// java8 之前处理集合
System.out.println( " Befor JAVA8 ");
for (Book book : bookList) {
System.out.println(book.toString());
}
// java8之后
System.out.println( " After JAVA8 ");
bookList.forEach( (bookParam) -> {
// 售价 6 元的改名
if (bookParam.getBookPrice() == 6)
bookParam.setBookName("六学家必备");
System.out.println(bookParam.toString());
});
}
}
【Java脱坑指南】Java8 Consumer的使用
最新推荐文章于 2025-04-30 17:41:34 发布