加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – T getInstance(final类型)为什么不用Class?

发布时间:2020-12-15 05:18:09 所属栏目:Java 来源:网络整理
导读:所以,我正在深入研究 Java并对这种类型参数的使用感到好奇. TT getInstance 然后是arg ClassT type 我在这里有点困惑,因为如果我们需要一个返回类型,由T表示那么为什么arg不是相同的…例如 private static String getInstance(String arg) 所以我想它会是 pr
所以,我正在深入研究 Java并对这种类型参数的使用感到好奇.

<T>T getInstance

然后是arg

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,而传递给该方法的参数是参数化为T的泛型java.lang.Class类型的实例.

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

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有很大不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读