簡體   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