@@ -647,7 +647,7 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc
647
647
- handler: 拒绝策略
648
648
649
649
``` java
650
- ThreadPoolExecutor threadPoolExecutor
650
+ ThreadPoolExecutor threadPoolExecutor
651
651
= new ThreadPoolExecutor (
652
652
2 , 5 ,
653
653
5 , TimeUnit . SECONDS ,
@@ -672,7 +672,7 @@ synchronized(obj) {
672
672
}
673
673
674
674
// (静态)方法
675
- public synchronized
675
+ public synchronized
676
676
(static ) void methodName() {
677
677
...
678
678
}
@@ -717,7 +717,7 @@ try {
717
717
### ThreadLocal
718
718
719
719
``` java
720
- ThreadLocal<Integer > threadLocal
720
+ ThreadLocal<Integer > threadLocal
721
721
= new ThreadLocal<> ();
722
722
```
723
723
@@ -990,7 +990,7 @@ Reader bufferedFileReader
990
990
);
991
991
992
992
// 缓冲字符输出流
993
- Writer bufferedFileWriter
993
+ Writer bufferedFileWriter
994
994
= new BufferedWriter (
995
995
new FileWriter (" output.txt" )
996
996
);
@@ -1000,23 +1000,23 @@ Writer bufferedFileWriter
1000
1000
1001
1001
``` java
1002
1002
// 数据输入流
1003
- DataInputStream dataInputStream
1003
+ DataInputStream dataInputStream
1004
1004
= new DataInputStream (inputStream);
1005
1005
1006
1006
// 数据输出流
1007
- DataOutputStream dataOutputStream
1007
+ DataOutputStream dataOutputStream
1008
1008
= new DataOutputStream (outputStream);
1009
1009
```
1010
1010
1011
1011
### 对象流
1012
1012
1013
1013
``` java
1014
1014
// 对象输入流
1015
- ObjectInputStream objectInputStream
1015
+ ObjectInputStream objectInputStream
1016
1016
= new ObjectInputStream (inputStream);
1017
1017
1018
1018
// 对象输出流
1019
- ObjectOutputStream objectOutputStream
1019
+ ObjectOutputStream objectOutputStream
1020
1020
= new ObjectOutputStream (outputStream);
1021
1021
```
1022
1022
@@ -1027,7 +1027,7 @@ ObjectOutputStream objectOutputStream
1027
1027
1028
1028
``` java
1029
1029
try (
1030
- ObjectOutputStream objectOutputStream
1030
+ ObjectOutputStream objectOutputStream
1031
1031
= new ObjectOutputStream (new FileOutputStream (" object.dat" ))
1032
1032
) {
1033
1033
objectOutputStream. writeObject(object);
@@ -1038,7 +1038,7 @@ try (
1038
1038
1039
1039
``` java
1040
1040
try (
1041
- ObjectInputStream objectInputStream
1041
+ ObjectInputStream objectInputStream
1042
1042
= new ObjectInputStream (new FileInputStream (" object.dat" ))
1043
1043
) {
1044
1044
Object object = objectInputStream. readObject();
@@ -1470,6 +1470,71 @@ int frequency = Collections
1470
1470
.frequency(list, 2 ); // frequency = 2
1471
1471
```
1472
1472
1473
+ ### 方法引用
1474
+ <!-- rehype:wrap-class=col-span-2-->
1475
+ 有一种函数式接口叫做` Consumer ` ,里面有个抽象方法` accept ` 能够接受一个参数但是没有返回值,加入我想实现这个方法,让他打印我传入的参数,那么我可以这样:
1476
+
1477
+ ``` java
1478
+ Consumer<String > test = new Consumer<String > () {
1479
+ @Override
1480
+ public void accept (String s ) {
1481
+ System . out. println(s);
1482
+ }
1483
+ };
1484
+ test. accept(" test" );
1485
+ ```
1486
+
1487
+ 更简单的,我们可以直接传入Lambda表达式
1488
+
1489
+ ``` java
1490
+ Consumer<String > test = System . out:: println;
1491
+ ```
1492
+
1493
+ 这就是方法引用,方法引用通过方法的名字来指向一个方法,让语言的构造更紧凑简洁,减少冗余代码。
1494
+
1495
+ #### 使用方式
1496
+
1497
+ - 引用方法
1498
+ - 引用构造方法
1499
+ - 引用数组
1500
+
1501
+ #### 引用方式
1502
+
1503
+ - 实例对象::实例方法名
1504
+
1505
+ ``` java
1506
+ Consumer<String > myConsumer = System . out:: println;
1507
+ myConsumer. accept(" test" );
1508
+ ```
1509
+
1510
+ - 类名::静态方法名
1511
+
1512
+ ``` java
1513
+ Function<Long , Long > myFunction = Math :: abs(x);
1514
+ Long result = myFunction. apply(" -2L" );
1515
+ ```
1516
+
1517
+ - 类名::实例方法名
1518
+
1519
+ ``` java
1520
+ BiPredicate<String , String > myBiPredicate = String :: equals;
1521
+ System . out. println(myBiPredicate. test(" test" , " test" ));
1522
+ ```
1523
+
1524
+ - 引用构造器
1525
+
1526
+ ``` java
1527
+ Function<Integer , String > myFunction = StringBuffer :: new ;
1528
+ StringBuffer sb = myFunction. apply(10 );
1529
+ ```
1530
+
1531
+ - 引用数组
1532
+
1533
+ ``` java
1534
+ Function<Integer , int[]> myFunction = int []:: new ;
1535
+ int []arr = myFunction. apply(123 );
1536
+ ```
1537
+
1473
1538
另见
1474
1539
---
1475
1540
0 commit comments