0

我想知道,在您从实现某个接口的某个对象到该特定接口的转换之后,参考内容会去哪里?这是一个例子:

MyClass mc = new MyClass();

MyClass 实现 IIfc。所以,这里是接口的转换:

IIfc ifc = (IIfc) mc;

保存的内容在哪里ifc,我知道它在堆上,但它是 mc 实例的一部分还是指向ifc 的 mc 方法的其他内存地址?

PS:我看到很多人没有得到这个问题。ifc 指向的地址在哪里?它是在对象(mc)内部还是在堆的其他位置?

4

2 回答 2

5

对象保持原样。参考也保持不变。

这就是为什么您可以将其转换回MyClass

IIfc ifc = (IIfc) mc;
MyClass mc2 = (MyClass) ifc;
于 2013-07-12T08:00:45.677 回答
0

实际上 IIfc ifc 本身就是一个引用,它位于 int 当前正在执行的tread 的堆栈中,所以它不是 mc 的一部分。参考点指向与 mc 相同的位置。

于 2013-07-12T08:21:51.120 回答