繁体   English   中英

如何使java.lang.Object.clone公开?

[英]How to make java.lang.Object.clone public?

具体来说:如何修改java.lang.Object.clone以便在字节码调用JVM时不会发出尖叫声?

您不能修改java.lang.Object.clone() 您可以重写clone()使其成为您定义的任何类中的公共方法,尽管这样做是没有用的,除非声明该类(或其层次结构中的某个类)以实现Cloneable接口。

public class MyClass implements Cloneable {
    public Object clone() {
        return super.clone();
    }
}

另一种常用的复制方法是定义一个复制构造函数:

public class MyClass {
    public MyClass() {
        // standard default constructor
    }

    public MyClass(MyClass other) {
        // copy constructor -- initialize from values in other
    }
}

Peter Lawrey的评论提出了编辑rt.jar的想法。 这可行。 它也是完全无害的。

(将访问修饰符代码0x0104 0x0101rt.jar/java/lang/Object.class正确位置的0x0101

同样,可以构造一个rtplus.jar包含修改后的类文件的rtplus.jar ,然后使用-Xbootclasspath/p:rtplus.jar来让java使用该版本。 (是的,EJP,我们无法分发该rtplus.jar但以编程方式生成它非常容易)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM