修改源碼的幾種取巧的方式


修改源碼的幾種取巧的方式

第一種 導入源碼的方式

直接導入源碼,比如直接導入mybatis的源碼在項目里面運行

第二種 復制或者繼承此類

比如hashmap類。復制或者自己寫一個MyHashmap繼承hashmap。重寫需要的方法

public class MyHashMap extends HashMap {


    @Override
    public Object put(Object key, Object value) {

        System.out.println("put action...");
        return super.put(key, value);
    }

    public static void main(String[] args) {

        MyHashMap myHashMap =new MyHashMap();
        myHashMap.put("123","666");
        System.out.println(myHashMap);
    }
}

通過MyHashMap的put方法,將會添加一句輸出語句

第三種 通過類加載機制優先加載自己項目同路徑的java文件

假設我項目導入了一個jar包。包路徑是com.fy

包里面有兩個簡單的class類,CountAge調用countByMath的方法

package com.fy;

public class CountAge {
    public CountAge() {
    }

    public static int count(int birth) {
        return countByMath.countNumber(birth);
    }
}

--------------------
    
public class countByMath {
    public countByMath() {
    }

    public static int countNumber(int a) {
        return 2020 - a;
    }
}

此時我們在測試類調用次包的方法,將會打印26

 public static void main(String[] args) {

        System.out.println(CountAge.count(1994));   //26

    }

接下來是重點:

如果我們在我們的java源文件夾下面新建com.fy的文件夾。編寫一個同名的java類和同名的方法。只是方法體不一樣.此時再執行測試類的方法就會打印 18206

package com.fy;

public class countByMath {

    public static int countNumber(int a) {
        return 20200 - a;
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM