首页 > 解决方案 > 从地址获取对象

问题描述

这只是一般知识,我很确定这可能是不可能的,但我很想知道。

假设我有一个 Student 类对象s1,并将它作为myFunc(s1.toString()). 我没有覆盖toString()函数。当参数到达函数时,我可以仅通过地址引用回原始对象吗?

代码:

public static void main(){
    Student s1;
    myFunc(s1.toString());
}
public static myFunc(String address){
    Student s2;
    s2 = //get s1 object from address string
}

标签: javaooppointersmemoryreference

解决方案


在保留 Java 语言的情况下,您要求做的事情在设计上是不可能的。与像 C 这样简单地将内存区域的任意控制权交给程序的语言相比,JVM 使用能力模型,其中安全性和某种正确性度量取决于不能伪造引用的事实(制造自用户定义的数据,例如字符串,而不是由 VM 本身生成)——获取对象引用的唯一官方方法是通过new或复制现有引用创建该对象。


推荐阅读