java 中Function的详细使用
时间: 2024-04-15 15:07:16 浏览: 11
Java中的Function是一个函数接口,它接受一个参数并返回一个结果。Function接口中有一个apply()方法,用于接受参数并返回结果。以下是Function的详细使用:
1. 声明Function
可以使用Lambda表达式或匿名内部类声明Function。例如:
```java
// 使用Lambda表达式声明Function
Function<Integer, String> convertToString = (num) -> String.valueOf(num);
// 使用匿名内部类声明Function
Function<Integer, Integer> square = new Function<Integer, Integer>() {
@Override
public Integer apply(Integer num) {
return num*num;
}
};
```
2. 调用Function
可以使用apply()方法调用Function,并将参数传递给它。例如:
```java
// 调用convertToString Function
String str = convertToString.apply(123); // str = "123"
// 调用square Function
int result = square.apply(5); // result = 25
```
3. 使用compose()方法和andThen()方法
Function接口提供了compose()方法和andThen()方法,用于组合多个Function。compose()方法先执行传入的Function,然后再执行当前Function。andThen()方法则先执行当前Function,然后再执行传入的Function。例如:
```java
// 声明两个Function
Function<Integer, Integer> square = (num) -> num*num;
Function<Integer, String> convertToString = (num) -> String.valueOf(num);
// 使用compose()方法组合两个Function
Function<Integer, String> squareAndConvert = convertToString.compose(square);
String result = squareAndConvert.apply(5); // result = "25"
// 使用andThen()方法组合两个Function
Function<Integer, String> convertAndSquare = square.andThen(convertToString);
String result = convertAndSquare.apply(5); // result = "25"
```
4. 使用identity()方法
Function接口还提供了identity()方法,它返回一个接受任何参数并返回该参数的Function。例如:
```java
Function<Integer, Integer> identityFunction = Function.identity();
int result = identityFunction.apply(5); // result = 5
```