仅使用Java就能做到吗?
简单的答案是强调“您不想这样做!”。
从技术上讲,这是可能的,但并非没有采取极其复杂,昂贵且易碎的技巧,例如字节码修改1。即使这样,您也必须依靠动态加载来访问修改后的类型,并(可能)使用反射来利用其新成员。简而言之,您将为自己制造很多痛苦,几乎没有收获。
Java是一种静态类型的语言,添加/修改类类型签名可能会破坏类的静态类型协定。
1-AspectJ之类的东西允许您向类中注入其他行为,但是可能不是您所追求的“运行时”注入。当然,注入的方法将无法用于静态编译的代码调用。



