java吧 关注:1,236,057贴子:12,704,680
  • 1回复贴,共1

我觉得这个问题,这里90%的人答不上来

只看楼主收藏回复

为什么一个方法,返回的是Object类型,但是却可以强制转换成一个接口类型
比如动态代理的Proxy.newProxyInstance方法,返回的是一个Object,我们如果要用它,必须先强转成某个接口类型


IP属地:江苏1楼2017-03-27 09:37回复
    在这个类型方向,强势转换的意义不太好,叫做强制划分比较好,因为Object是所有类的父类,像代理类,在使用注解获得对象时只能获得指向代理类的Object类对象,我们需要的方法是代理类里的,但作为父类,Object显然是没有这些的,所以需要强制划分;为什么能划分呢?因为对象就是一个地址值,指向一块内存区域,内存里写的什么,JAVA只能在对象类型上加以区分,但实上是什么东西,JAVA不管;实际上就是个代理类,用父类Object的指针指向这块区域没有问题,因为Object能操作的东西,代理类都有,如果强转成Proxy有没有问题?也没有,因为这块区域也有Proxy能操作的东西。那转成String呢?不行,因为String要操作的东西这里面没有


    2楼2017-03-27 09:53
    回复