|
|
1
10
编译器无法在此处检查
你真的传递了类型的对象
在运行时级别有类型擦除,所以当该行执行时,没有
只有这样,才能真正尝试使用整数值而不是字符串
解决方案?使用
同样,代码的问题是,您强制将整数视为对象(合法),并强制将对象强制强制转换为类型K(编译期间始终合法,运行时不总是正确)。 |
|
|
2
0
Java泛型只是编译时的功能,而不是运行时功能。因此,阶级例外 |
|
|
3
0
您正在插入整数(对象的子类),而检索它时,您有字符串,因此它将以类类型转换异常结束。
上面的行将整数添加到列表中
它被铸成细绳。因为方法提取具有超类,所以它将插入fine。但是当你把它强制转换回来的时候,它会抛出类强制转换异常。 |
|
|
4
0
这是因为输入的结果是
但事实上
编译器无法确保传递给extract方法的子列表包含或不包含k/v类型的对象。这样它就不会在编译时失败,但它建议您在21和22行使用未启用的强制转换警告。 如果您想成为编译时错误,可以这样声明提取方法
(我重复k,因为列表只有一个参数类型) 这样你就不需要演员了:
在主要方法中
如果您尝试传递到与迭代器不同的提取方法,您将看到编译时错误。 |
|
5
0
这个保证是由静态类型检查给出的…因为您告诉编译器要相信元素是给定类型(转换为泛型类型k和v),然后在运行时忘记了这些信息(类型擦除),所以您实际上是在插入任何对象。 如果您希望该错误以前出现,可以执行以下操作:
|