修改源碼的幾種取巧的方式
第一種 導入源碼的方式
直接導入源碼,比如直接導入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;
}
}