Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道,在您从实现某个接口的某个对象到该特定接口的转换之后,参考内容会去哪里?这是一个例子:
MyClass mc = new MyClass();
MyClass 实现 IIfc。所以,这里是接口的转换:
IIfc ifc = (IIfc) mc;
保存的内容在哪里ifc,我知道它在堆上,但它是 mc 实例的一部分还是指向ifc 的 mc 方法的其他内存地址?
ifc
PS:我看到很多人没有得到这个问题。ifc 指向的地址在哪里?它是在对象(mc)内部还是在堆的其他位置?
对象保持原样。参考也保持不变。
这就是为什么您可以将其转换回MyClass:
MyClass
IIfc ifc = (IIfc) mc; MyClass mc2 = (MyClass) ifc;
实际上 IIfc ifc 本身就是一个引用,它位于 int 当前正在执行的tread 的堆栈中,所以它不是 mc 的一部分。参考点指向与 mc 相同的位置。