zoukankan      html  css  js  c++  java
  • 修改源码的几种取巧的方式

    修改源码的几种取巧的方式

    第一种 导入源码的方式

    直接导入源码,比如直接导入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;
        }
    
    }
    
    
  • 相关阅读:
    python自动发邮件库yagmail
    Vmware改成bridge方式联网
    centos7 更新Firefox版本
    无法应用转换程序,请检查指定的转换程序路径是否有效
    python中list/tuple/dict/set的区别
    Python中的*arg和**kwarg
    centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins
    用 Apache Derby 进行 ODBC 编程
    Derby 命令
    Python与数据库
  • 原文地址:https://www.cnblogs.com/fangyuandoit/p/14075301.html
Copyright © 2011-2022 走看看