【发布时间】:2012-01-10 23:25:23
【问题描述】:
我对允许用户输入修改进程和相应源的执行脚本感兴趣。
有哪些先例可以实现这样的结构?
【问题讨论】:
我对允许用户输入修改进程和相应源的执行脚本感兴趣。
有哪些先例可以实现这样的结构?
【问题讨论】:
我曾经编写了一个应用程序,它使用反射来允许由文本文件驱动测试。例如,如果您有这样的课程:
class Tuner(String Channel) {
tune(){...
play(){...
stop(){...
}
您可以通过以下代码执行方法:
tuner=Channel 1
tune tuner
play tuner
stop tuner
它具有更多功能(您可以将对象传递给其他对象等),但大多数情况下,我使用它来驱动有线电视盒上的测试,其中完整的写入/构建/部署以进行测试的顺序为半小时。
您可以创建一些可重用的类,并将它们与这种测试语言结合在一起,以创建一些非常复杂且易于创建的测试。
那是一种 DSL,它不会通过消除括号并在随机位置添加下划线和点来让它看起来像一些奇怪的半英语,从而与您的松散语法语言胡闹。
【讨论】:
是的,取决于意思。
考虑像ObjectWeb ASM 这样的项目(请参阅the ASM 2.0 tutorial 了解一般纲要)。
尝试发出需要反编译的 Java 源代码是另一回事:如果这是目标,那么也许应该编辑、重新编译源代码,并以某种方式加载/加载。 (这也是可能的,请考虑使用 JRebel 之类的工具。)
编码愉快。
【讨论】:
您应该不能修改现有的类。但是如果你实现了 ClassLoader,那么你可以从非传统来源动态加载类:网络、XML 文件、用户输入、随机数生成器等。
可能还有其他更好的方法。
【讨论】: