### 方法引用
若lambda體中的內容已經有方法實現了,則可以使用方法引用。
其實就是是lambda表達式的另一種表現形式
```java
list.stream()
.filter(Objects::nonNull)
.map(Car::getName)
.collect(toList());
```
****
### 主要有三種語法格式
### 1. 對象::實例方法名字
當前調用方法的參數和返回值類型要和接口的方法的參數和返回型類型一致。
print 參數t 返回值類型void = Consumer的accept方法 參數t 返回值類型void
```java
PrintStream ps = System.out;
Consumer consumer = ps::print;
```
### 2. 類::靜態方法名
```java
//Comparator<Integer> comparator = (x,y) -> Integer.compare(x,y);
Comparator<Integer> comparator = Integer::compare;
comparator.compare(4,5);
```
### 3. 類::實例方法名字
第一個參數需要是實例方法的調用者 第二個是實例方法的參數 才可以使用這種方式。
```java
//BiPredicate<String, String> biPredicate = (x, y) -> x.equals(y);
BiPredicate<String, String> biPredicate = String::equals;
biPredicate.test("he","wa");
```