问题描述
我有一个jar文件,里面是一些工具类,但是,比如有一个StringUtil类,做一些字符串的操作,但是这个jar里面没有我想要的方法。我怎么不修改源码的情况下,给StringUtil新增方法。使用什么设计模式?
解决方案
看你需求,如果在运行时需要植入方法, 那用 asm或javassist 在加载类时改字节码,需要自己实现classloader,并自己从程序上确保该类被这个classloader载入。或者在JVM启动时,同时启动agent或javaagent,用它来监控类的装载。orale的JVM启动之后,可以用工具(jdk自带)来attach javaagent 到运行中的JVM并使之运行,可以在这个javaagent里扫描所有加载类并监控后以后加载的类并改之。如果在编译时需要,那就还不如干脆继承该类,并添加自己的方法。
解决方案二:
使用asm在运行时修改java的class,具体说明参考:http://www.oschina.net/p/asm/
解决方案三:
如果有访问权限可以自己定义一个类继承这个StringUtil,然后再写自己的方法
时间: 2024-10-26 23:38:41