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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Toy{
  2. }
  3. class FancyToy extends Toy{

  4. }
  5. public class test{
  6. public static void main(String[] args) throws Exception{
  7. Class<FancyToy> ftClass = FancyToy.class;
  8. FancyToy fancyToy=ftClass.newInstance();
  9. Class<? super FancyToy> up = ftClass.getSuperclass();
  10. //Class<Toy> up2= ftClass.getSuperclass();//谁能解释不可以这样做?ftClass基类不就是Toy吗?
  11. Object obj=up.newInstance();
  12. }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
你这可以有好多做法 但是就你这道题而言 主要原因在Class<FancyToy> ftClass = FancyToy.class; 因为在这里你已经给ftClass盖上了一个戳而且还是子类的戳 所以想要去掉就只能强转或者左边给与较大的类型范围 如果你这样Class ftClass = FancyToy.class 那么下面你就可以写成你说的那样//Class<Toy> up2= ftClass.getSuperclass();//

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马