您是否曾经在 Java中创建或遇到过自修改代码?如果是,请发布链接或简单地发布代码。
问问题
9679 次
7 回答
2
您可以使用bcel 之类的库编写 (Java) 代码,在运行时生成新类(字节码)。这与自修改代码不太一样。我怀疑自我修改代码不是JVM支持的。
有关在运行时生成新代码的示例,请查看clojure的源代码。
于 2009-06-26T11:05:16.017 回答
1
这应该很难实现。但是您可以在运行时创建新类并使用自定义类加载器加载它们。如果你想再次修改代码,你必须重新加载类。
于 2009-06-26T10:59:46.293 回答
1
从BCEL:
字节码工程库旨在为用户提供方便的可能性来分析、创建和操作(二进制)Java 类文件(以 .class 结尾的文件)。类由包含给定类的所有符号信息的对象表示:特别是方法、字段和字节码指令。
于 2009-06-26T11:03:11.760 回答
1
为此,我看到了这些选项:
- 生成java源代码,用外部javac或者内部编译工具编译(记不住名字)。由于您负责命名,因此只需在类名中包含版本计数以避免类加载异常。
- 使用内置的 JavaScript 引擎支持
- 使用java Proxys可以解决一些场景
编辑:我曾经创建了一个 Java 1.4 程序,它从现有的遗留数据库中获取业务规则,生成带有一堆 println() 的 java 文件(基本上是 Predicate 接口的实现),并使用命令行 javac 编译它们。
于 2009-06-26T11:05:00.633 回答
0
作为一名本科生,我开始研究JikesRVM。它是(主要)用 Java 实现的 JVM。在运行时它将 JIT 编译自己!这是一项非常酷的技术。
于 2009-06-26T11:07:26.323 回答
-2
你总是可以只使用动态语言......
于 2009-06-26T11:00:47.333 回答