为了账号安全,请及时绑定邮箱和手机立即绑定

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

为什么啊

正在回答

6 回答

肯定不能这么用

Foo foo = new Foo();

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

foo = c.instance();

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

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

0 回复 有任何疑惑可以回复我~

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

4 回复 有任何疑惑可以回复我~

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

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

1 回复 有任何疑惑可以回复我~

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

4 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信