### 方法引用
若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");
```