2 q8232356 q8232356 于 2016.09.17 12:01 提问

求助各位java的朋友们,小弟初来乍到,这行代码是什么意思呢?

localObject1 = ((ao)localObject2).a();


后面这个.a()应该是方法吧 ,前面这个 (localObject2)对象,加了(ao)是什么意思?
就是这一段((ao)localObject2)

6个回答

Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.17 13:43
已采纳

我这里给模拟一下吧。

 public class Temp {

    public static void main(String[] args) {
        Object localObject2 = new Object();
        ao localObject1 = null;

        localObject1 = ((ao) localObject2).a();
        System.out.println(localObject1);
    }

}
class ao {
    private ao a = new ao();
    public ao a(){
        System.out.println("这里是a方法!");
        return this;
    }
}

结果为:

 Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to dynamic.ao
    at dynamic.Temp.main(Temp.java:19)

虽然满足了语法,但是这并不符合Java的运行原则。


但是这并不代表着思路有问题。这行代码的意思是。先将localObject2强制的转换为ao类型的对象,然后调用其a方法,结果返回一个对象,再赋值给localObject1对象。这也是强制类型转换的一个比较常见的体现。

weixin_36165756
weixin_36165756 回复Marksinoberg: 实话说,是你那样没意义,我这样就是正常的父类下转型,为了调子类方法。
大约一年之前 回复
Marksinoberg
Marksinoberg 回复weixin_36165756: 那样还有什么意义,:(
大约一年之前 回复
weixin_36165756
weixin_36165756 回复Marksinoberg: 你这是特意举个出错的例子,你这个子类引用指向父类Object对象,运行肯定出错,那你前面的new Object()换成new子类ao,这种转型就没问题了。
大约一年之前 回复
xubo_ob
xubo_ob   2016.09.17 12:28

强制转换啊亲,将 localObject2强制转换为对象ao。 你百度下 java强制转换就明白啦

qq_29594393
qq_29594393   Ds   Rxr 2016.09.17 12:39

由于等号两边的类型不一样,不能复制,通过强制转换为相同的类型再赋值

guwei4037
guwei4037   Ds   Rxr 2016.09.17 12:56

强制类型转换。

((ao)localObject2).a();

先把localObject2强制转换为ao对象类型,然后再调用a方法。

yk377657321
yk377657321   2016.09.17 13:34

强制类型转换;将localObject2转换成ao的对象类型,然后调用a方法

moremore123
moremore123   2016.09.17 15:19

强制类型转换;将localObject2转换成ao的对象类型,然后调用a方法

Csdn user default icon
上传中...
上传图片
插入图片