java class list_Java将用于通用类型(例如List)的“ .class”运算符转换为“ Class”>”和“类>”...

我使用.class-operator向通用类提供有关所包含类型的信息。对于非泛型包含类型,例如Integer.class,这可以正常工作。但是所包含的类型是泛型的,例如,List.class否则List.class会导致有关类强制转换的编译时错误。

有一种方法可以避免这些错误,但是我对这里发生的事情感到好奇。有人可以解释发生了什么吗?为什么情况原样?解决问题的最佳方法是什么?

以下几行说明了该问题:注意,外部通用类型期望Class作为参数,因此在这种情况下Class>。

Class tInt = Integer.class; // Works as expected.

Class tList = List.class; // Works with warning, but is not

// what i'm looking for.

Class> tListInt1 = List.class; // Error

Class> tListInt2 = (Class>) List.class; // Error

Class> tListGeneric = (Class>) List.class; // Error

下一行有效:

Class> tListInt3 =

(Class>) ((Class)List.class);

为什么声明tListInt2并tListGeneric给予和错误?为什么先进行向上转换再进行向下转换tListInt3不会产生错误?有没有更好的方法来声明tListInt3?

此致,

卡斯珀·范·登·伯格

ps。让我知道您是否想看一下需要这种类型信息的外部通用容器的代码。如有需要,我会发布。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值