gpt4 book ai didi

Java 泛型与函数中的类型

转载 作者:行者123 更新时间:2023-11-30 08:40:56 24 4
gpt4 key购买 nike

我最近阅读了很多关于泛型的内容。

public static <T extends CharSequence> void prnt(T obj);

public static void prnt(CharSequence obj);

两者有什么区别吗?

最佳答案

对于您的示例,它并没有真正产生影响。

不同之处在于以下示例:

    public static CharSequence foo1(CharSequence c) {...}

public static <T extends CharSequence> T foo2(T t) {...}

两者都将返回一个对象,该对象是 CharSequence 的子类型但第二个允许更大的灵 active 。想象一下下面的代码:

    String s = "test";
CharSequence c = s;

CharSequence c1 = foo1(c);
CharSequence c2 = foo2(c);

正如您所期望的那样工作正常。

    CharSequence c1 = foo1(s);
String s2 = foo2(s);

在这里我们看到了为什么使用泛型声明函数可能有意义。与 <T extends CharSequence>我们可以强制该函数仅适用于 CharSequence 的子类而不会丢失有关实际类型的信息。另一方面,第一种方法会丢失此信息,甚至可能会迫使您进行非常难看的类型转换。

关于Java 泛型与函数中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com