java不支持泛型数字

先记录一下,留着遇到问题,能有个思路!

Arrays of generics are not type-safe, because arrays (unlike generic collections) are covariant: you can use a String[] when an Object[] is required, but not so with List<String> and List<Object>.

Covariant collections are not type-safe unless they are read-only.


In a little more detail:
The Java designers decided to disallow arrays of generics because 1) it would not be type-safe, and 2) generics were added to the language precisely to ensure type-safety.

Arrays are also not type-safe:

String[] strings;
Object[] objects = strings; // allowed because of covariance
objects[0] = Long.valueOf(9); // fails at runtime with ArrayStoreException



Because generic types don't carry the type parameter at runtime (that info is "erased"), the JVM cannot even throw an ArrayStoreException in this example

List<String>[] stringsArray = ... // can't create
Object[] objects = stringsArray; // allowed because of covariance of arrays
List<Long> longs = Arrays.asList(Long.valueOf(7));
objects[0] = longs; // ArrayStoreException cannot be thrown because JVM doesn't know the type parameter Long, it's been erased
int length = stringsArray[0].get(0).length(); // would throw ClassCastException---type safety compromised

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值