修改源码的几种取巧的方式
修改源码的几种取巧的方式
第一种 导入源码的方式
直接导入源码,比如直接导入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;
}
}