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

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


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

我这里给模拟一下吧。

 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对象。这也是强制类型转换的一个比较常见的体现。

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

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

强制类型转换。

((ao)localObject2).a();

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

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

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