localObject1 = ((ao)localObject2).a();
后面这个.a()应该是方法吧 ,前面这个 (localObject2)对象,加了(ao)是什么意思?
就是这一段((ao)localObject2)
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对象。这也是强制类型转换的一个比较常见的体现。