Java泛型的转换为啥会被提示类型不安全?

classDemo<T,SextendsT>{publicvoidshow(Tt,Ss){t=s;s=(S)t;//为什么这里Eclipse提示Typesafety:Un... class Demo<T, S extends T>{

public void show(T t, S s){
t = s;
s = (S)t; //为什么这里Eclipse提示Type safety: Unchecked cast from T to S
}
}

package cn.ifavor.app;

public class Program {
public static void main(String[] args){
Student s = (Student)new Object(); //而这里却没有类型安全提示
}
}

class Student{}

这是为什么
展开
 我来答
百度网友19bbb55
2014-09-02 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:71.7万
展开全部
上面异常的原因 我的理解是这样的

T 是S的父类
虽然你
t= s 让t 指向了 s所指向的对象
但是T 的实际类型还是一个父类
下面你吧t 强转成了子类类型
虽然是可以成功的 因为 此时的t 指向的对象类型就是S
但是编译器还是会提示你 有异常的
希望能帮到你
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式