欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

问Java类可以在运行时向自身添加方法吗?EN

最编程 2024-02-19 20:14:49
...

Andres_D是对的,我们可以使用自定义类加载很好地做到这一点,这里有一个关于如何做到这一点的详细指南:http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html?page=1

这篇文章解释了如何编写动态

代码。它讨论了运行时源代码编译、类重新加载,以及如何使用Proxy设计模式使对动态类的修改对其调用者透明。

事实上,奥地利的研究人员已经编写了一个JVM,它甚至允许重新加载具有不同类型层次结构的类。他们已经实现了这一点,使用现有的线程保存点来生成对象及其所有相关引用和引用内容的完整“侧面世界”,然后在完全重新洗牌所有所需的更改后,只需交换所有更改的类。1这里有一个到他们的项目http://ssw.jku.at/dcevm/的链接,oracle的赞助肯定会引起对未来计划的有趣猜测。

使用java 1.4中引入的JPDA的热交换功能,在标准Java VM中已经可以对方法体和字段进行侵入性较小的更改:

docs.oracle.com/javase/1.4.2/docs/guide/jpda/enhancements.html#hotswap

我不确定这是否是第一个,但这位Sun员工2001年的论文似乎是提到HotSpot到热插拔功能的早期提案之一。2

参考

1T.Würthinger,C.Wimmer和L.Stadler,“Java的动态代码演变”,2010年在维也纳举行的第8届国际Java编程原则和实践会议上发表。

2 M.Dmitriev,“走向灵活和安全的java语言应用程序运行时演化技术”,OOPSLA Engineering on Engineering Complex Object-Oriented Systems for Dmitriev,2001。