A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pphdsny3 高级黑马   /  2012-9-4 11:03  /  1538 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


为啥加了具体的泛型就报错?

加个问号就没问题呢?
求解答!!!

3 个回复

正序浏览
Class.forName(String className)  API 说返回的是 具有指定名的类的 Class 对象
你的第一个代码 用泛型指定 Person类型,它返回的不是Person类型,要强转
第二个代码的 ? ,可以接受任何类型,所以不报错
回复 使用道具 举报
楼主你的程序 我估计是 泛型限定这方面出了错误哦。。。
泛型的限定:
                明确具体类型代表一个类型,明确?代表所有类型,
                能不能对操作的类型限制在一个范围之内呢?
               
                比如:定义一个功能,只操作person类或者person子类型。这时可以用? 继承 E接收e类型或者E的子类型。
                存储时候就用这种方式。这就是上限。
                下限的表示形式: ? super E;接受E类型或者E的父类型。
                                               
        什么时候使用上限呢? 一般情况下,只要是往容器中添加元素时,使用上限 ? extends         E
        什么时候使用下限呢?一般情况下,只要是从容器中取出元素时,使用下限 ? super E       
回复 使用道具 举报
?是占位符,代表任意类型!
Class<Person> clazz=(Person)Class.forName("XXXXXX");你之前好像没有加强制类型转换符号!?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马