为什么要Foo类型转换呢 ?本来c1.newInstance()就是Foo类的对象,那么Foo foo不也是Foo的吗 都一样的类型为什么要转换呢 ?求大神解释啊@

来源:1-1 Class类的使用

帅D一B

2014-11-26 11:29

为什么啊

写回答 关注

6回答

  • 阳少兮_s
    2015-07-30 16:35:22

    肯定不能这么用

    Foo foo = new Foo();

    Class<?> c = foo.getClass();

    foo = c.instance();

    这么用就死循环了,而且一点意义就没有。

    这些只是举个例子,可以得到一个对象的Class对象,也可以从一个Class对象转换成一个具体对象。

  • 比利海灵顿
    2015-05-05 19:46:09

    (thinking in java 4th p319)newInstance是实现虚拟 构造器的一种方法,(虚拟构造器:允许你不知道确切类型,但是你必须要正确的创造自己)而c1,c2,c3仅仅只是Class类的引用,编译器不具备任何更多信息,只有在创建新实例的时候会得到Object引用(注意 是Object引用),你要想用这个引用那你必须要向下转型啦,就是这里的强制类型转换。。

  • zhouhaojie
    2015-01-25 22:32:56

    转型是为了得到更准确的信息。

    例如人是动物,狗也是动物。 但是你要表示人的话,你还是要把动物转成人。

  • 野老盟客
    2014-12-07 09:53:57

    我觉得可以这样理解,你说newInstance到底返回什么才能让所有的类都可以这样去实例化呢?那就需要所有类的父类对不对,那个所有类的父类就是Object,所以返回回来的是Object,那么这样的话就需要转换类型了,而你说的如果设计的人本身就不知道你有Foo这个类,所以他当然不会返回Foo这个类型。

  • 好帮手慕珊
    2014-11-26 13:37:06

    c1.newInstance()这个方法的返回值是Object类型,所以需要进行强制类型转换。

  • 偌颜宁
    2014-11-26 11:38:53

    c1的类型是Class,你在仔细看看视频

反射——Java高级开发必须懂的

反射,Java高级开发必须要懂的知识点,学好Java高级课程的基础

151467 学习 · 335 问题

查看课程

相似问题