您是否曾在Java中创建或遇到过self modifying code? 如果是,请发布链接或只是发布代码。
答案 0 :(得分:9)
忽略你可能通过自我修改代码(!)引发自己的悲伤世界,在我看来有3种选择:
答案 1 :(得分:2)
您可以使用像bcel之类的库编写在运行时生成新类(字节代码)的(Java)代码。这与自修改代码并不完全相同。我怀疑自修改代码不是JVM支持的东西。
有关在运行时生成新代码的示例,请查看clojure的源代码。
答案 2 :(得分:1)
这应该很难实现。但是您可以在运行时创建新类并使用自定义类加载器加载它们。如果要再次修改代码,则必须重新加载该类。
答案 3 :(得分:1)
来自BCEL:
字节代码工程库旨在为用户提供服务 分析,创建和操作的便捷方式 (二进制)Java类文件(以.class结尾的文件)。 类由包含所有的对象表示 给定类的符号信息:方法,字段和 特别是字节码指令。
答案 4 :(得分:1)
我为此目的看到了这些选项:
编辑:我曾经创建了一个Java 1.4程序,该程序从现有的遗留数据库中获取业务规则,生成了java文件(基本上是Predicate接口的实现),其中包含一堆println()和使用命令行javac来编译它们。
答案 5 :(得分:0)
作为一名本科生,我开始研究JikesRVM。它是一个用Java实现的(主要是)JVM。在运行时它将JIT编译自己!这是一项非常酷的技术。
答案 6 :(得分:-2)
你总是可以使用动态语言......