Skip to content

Commit c0b8eb4

Browse files
authored
docs: update docs/java.md. (#628)
1 parent 7fa1528 commit c0b8eb4

File tree

1 file changed

+75
-10
lines changed

1 file changed

+75
-10
lines changed

docs/java.md

Lines changed: 75 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc
647647
- handler: 拒绝策略
648648

649649
```java
650-
ThreadPoolExecutor threadPoolExecutor
650+
ThreadPoolExecutor threadPoolExecutor
651651
= new ThreadPoolExecutor(
652652
2, 5,
653653
5, TimeUnit.SECONDS,
@@ -672,7 +672,7 @@ synchronized(obj) {
672672
}
673673

674674
// (静态)方法
675-
public synchronized
675+
public synchronized
676676
(static) void methodName() {
677677
...
678678
}
@@ -717,7 +717,7 @@ try {
717717
### ThreadLocal
718718

719719
```java
720-
ThreadLocal<Integer> threadLocal
720+
ThreadLocal<Integer> threadLocal
721721
= new ThreadLocal<>();
722722
```
723723

@@ -990,7 +990,7 @@ Reader bufferedFileReader
990990
);
991991

992992
// 缓冲字符输出流
993-
Writer bufferedFileWriter
993+
Writer bufferedFileWriter
994994
= new BufferedWriter(
995995
new FileWriter("output.txt")
996996
);
@@ -1000,23 +1000,23 @@ Writer bufferedFileWriter
10001000

10011001
```java
10021002
// 数据输入流
1003-
DataInputStream dataInputStream
1003+
DataInputStream dataInputStream
10041004
= new DataInputStream(inputStream);
10051005

10061006
// 数据输出流
1007-
DataOutputStream dataOutputStream
1007+
DataOutputStream dataOutputStream
10081008
= new DataOutputStream(outputStream);
10091009
```
10101010

10111011
### 对象流
10121012

10131013
```java
10141014
// 对象输入流
1015-
ObjectInputStream objectInputStream
1015+
ObjectInputStream objectInputStream
10161016
= new ObjectInputStream(inputStream);
10171017

10181018
// 对象输出流
1019-
ObjectOutputStream objectOutputStream
1019+
ObjectOutputStream objectOutputStream
10201020
= new ObjectOutputStream(outputStream);
10211021
```
10221022

@@ -1027,7 +1027,7 @@ ObjectOutputStream objectOutputStream
10271027

10281028
```java
10291029
try (
1030-
ObjectOutputStream objectOutputStream
1030+
ObjectOutputStream objectOutputStream
10311031
= new ObjectOutputStream(new FileOutputStream("object.dat"))
10321032
) {
10331033
objectOutputStream.writeObject(object);
@@ -1038,7 +1038,7 @@ try (
10381038

10391039
```java
10401040
try (
1041-
ObjectInputStream objectInputStream
1041+
ObjectInputStream objectInputStream
10421042
= new ObjectInputStream(new FileInputStream("object.dat"))
10431043
) {
10441044
Object object = objectInputStream.readObject();
@@ -1470,6 +1470,71 @@ int frequency = Collections
14701470
.frequency(list, 2); // frequency = 2
14711471
```
14721472

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+
14731538
另见
14741539
---
14751540

0 commit comments

Comments
 (0)