方法前的泛型是什么意思?

时间:2020-01-12 20:48:32

标签: java function generics

我发现了一个基本上像这样的函数:

<R> MyClass<R> functionName(){}

我不知道前面的<R>是什么意思,我没有真正通过谷歌搜索找到任何东西。我知道泛型是什么,我只是不知道它们在那个特定位置的作用。

3 个答案:

答案 0 :(得分:3)

它将允许您编写可用作任何类型的通用辅助方法的方法。

这里是一个反转List实现的内容并将其返回到ArrayList中的示例。

        List<String> liststr = new ArrayList<>(List.of("A","B","C"));
        List<String> reversed = reverse(liststr);
        System.out.println(reversed);

        List<Integer> listint = new ArrayList<>(List.of(1,2,3,4));
        List<Integer> reverseint = reverse(listint);
        System.out.println(reverseint);

这是方法。


    public static <T>  List<T> reverse(ArrayList<T> list) {
        List<T> rev = new ArrayList<>();
        for (int i = list.size()-1; i >= 0; i--) {
            rev.add(list.get(i));
        }
        return rev;
    }

这本可以以其他方式完成,但需要返回值casting,并且还可能生成runtime cast exception

与所有通用方法和类一样,类型冲突将在compile time而不是runtime处解决。

答案 1 :(得分:2)

第一种是声明functionName将使用泛型,通常我们使用R来表示“返回”,这意味着该函数将返回操作R对象的MyClass实例。

为了更好地理解,如果是静态的,这是一种调用functionName的方法:

node index.js

答案 2 :(得分:1)

这意味着R是一个变量,该变量在执行该方法时分配,并且可以分配给任何类。 这可能会有所帮助:What are Generics in Java?

相关问题