我想知道,在你从一个实现某个接口的对象转换到那个特定的接口之后,参考内容会去哪里? 这是一个例子:
MyClass mc = new MyClass();
MyClass实现了IIfc。所以,这是界面的转换:
IIfc ifc = (IIfc) mc;
ifc
的内容保存在哪里,我知道是
在堆上,但是它是mc实例的一部分还是指向属于ifc的mc 方法的其他内存地址?
P.S:我看到很多人没有得到这个问题。 ifc指向的地址在哪里?它是在对象(mc)内还是在堆的其他位置?
答案 0 :(得分:5)
对象保持原样。参考文献也是如此。
这就是为什么你可以把它扔回MyClass
:
IIfc ifc = (IIfc) mc;
MyClass mc2 = (MyClass) ifc;
答案 1 :(得分:0)
实际上IIfc ifc本身是一个引用,它位于当前执行胎面堆栈的int中,因此它不是mc的一部分。引用指向与mc相同的位置。