gpt4 book ai didi

java - T getInstance(final Class type) 为什么不是 Class

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:11 24 4
gpt4 key购买 nike

所以,我正在深入研究 Java,并对这种类型参数的用法感到好奇。

<T>T getInstance

然后是参数

Class<T> type

我在这里有点困惑,因为如果我们需要一个返回类型,因此用 T 表示,那么为什么 arg 不一样......例如

private static String getInstance(String arg)

我觉得应该是

private static Class<T> getInstance(final Class<T> type)

所以,我很困惑为什么返回类型和参数的表达方式不同

最佳答案

没有必要让返回类型与参数类型相同,也绝不是任何规定的规则。

当方法定义为

private static <T> T getInstance(final Class<T> type)

这意味着返回对象将是 T 类型,而传递给该方法的参数是泛型 java.lang.Class 类型的实例,参数化为T

这意味着可以按如下方式调用该方法:

String string = getInstance(String.class);

因此,此方法采用 Class 类型的实例,并返回与此 Class 参数对应的类型的对象。

另一方面,当方法定义为

private static <T> T getInstance(final T type)

然后你被迫传递一个T类型的对象来获取实例。想象一下它会被调用如下:

String string = getInstance("a");

请注意 String 类型的对象“a”与 Class 类型的 String.class 有何不同。

关于java - <T>T getInstance(final Class<T> type) 为什么不是 Class<T> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929840/

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