难以理解方法方法声明

问题描述 投票:0回答:2

我正在按照这个示例来理解Java 8函数接口。示例中使用了以下代码。

import org.apache.commons.codec.digest.DigestUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

public class Java8Function4 {

    public static void main(String[] args) {

        Java8Function4 obj = new Java8Function4();

        List<String> list = Arrays.asList("node", "c++", "java", "javascript");

        // lambda
        //List<String> result = obj.map(list, x -> obj.sha256(x));

        // method reference
        List<String> result = obj.map(list, obj::sha256);

        result.forEach(System.out::println);

    }

    public <T, R> List<R> map(List<T> list, Function<T, R> func) {

        List<R> result = new ArrayList<>();
        for (T t : list) {
            result.add(func.apply(t));
        }
        return result;
    }

    // sha256 a string
    public String sha256(String str) {
        return DigestUtils.sha256Hex(str);
    }
}

我理解方法

map
需要两个参数,
List<T> list, Function<T, R> func
和返回
List<R>
,但我不明白在方法返回类型之前使用
<T, R>

有人可以帮我理解这里的

<T, R>
有什么用吗。

java-8 functional-interface
2个回答
0
投票

服务具有通用类型,使函数尽可能通用(但也动态适应列表的类型 - 整数、字符串...等)

如果您查看文档

这里,它会更好地描述它。

接口功能

类型参数:

T - 函数输入的类型

R - 函数结果的类型

所有已知子接口:

一元运算符

功能界面:

这是一个函数式接口,因此可以用作 lambda 表达式或方法引用的赋值目标。


0
投票
我找到了答案。 这种方法称为

Generic Method

。这些方法引入了自己的类型参数
详细信息可以在
这里找到。

© www.soinside.com 2019 - 2024. All rights reserved.