101: baseApp = (MyApp)this.getContext() 是做什么的?

101: What does baseApp = (MyApp)this.getContext() do?

当我这样做时:

 baseApp = (MyApp)this.getContext();

我到底在做什么?

相对于做:

 baseApp = myApp.doSomething();

我不关心方法,但了解结构。 上面这两个有什么不同,为什么?

做(MyApp)是什么意思?

Whats the meaning of doing (MyApp)?

这是一个引用类型转换。

它检查通过评估 RHS(即 this.getContext() )产生的引用是否与 MyApp 兼容,然后将其用作表达式的结果(具有该类型)。如果 RHS 表达式给出的引用不是兼容类型,将抛出运行时异常。

相比之下...

  baseApp = myApp.doSomething();

只是调用 doSomething() 方法并分配给它……没有进行类型转换。如果 doSomething() 方法未传递正确类型的值,您将收到编译错误。


郑重声明,这里没有 "instantiation"。使用 new 运算符1.

完成实例化

1 - ...或者通过调用特定的反射方法。

首先你从哪里调用这个?一个 Activity?

第一行是将当前对象上下文转换为 MyApp 对象,然后将其分配给名为 baseApp 的对象。而且我还假设 baseAppMyApp.

类型

第二行是将从名为 doSomething() 的方法返回的值赋给 baseApp


但需要更多信息才能进一步比较。