【发布时间】:2011-03-30 23:47:04
【问题描述】:
是否有可能以某种方式将新的 Java 类“导入”到正在运行的程序中并加以利用?
我可以让程序创建一个类型为“.java”的新文件,然后将其包含在项目文件中并引用它,而无需重新启动程序吗?
以下是我的意思的一个例子:
import java.io.*;
public class Program {
File JClass = new File("JClass.java");
public static BufferedWriter out = null;
public static void main(String[] args) {
try {
out = new BufferedWriter(new FileWriter("JClass.java"));
out.write("public abstract class JClass {");
out.newLine();
out.newLine();
out.write(" public void printSomething(String a) {");
out.newLine();
out.write(" System.out.println(a);");
out.newLine();
out.write(" }");
out.newLine();
out.write("}");
out.close();
} catch (IOException e)
{
System.exit(-1);
}
//Somehow import JClass.java as a class here
JClass.printSomething("Yay! It worked!");
}
}
生成的“JClass.java”文件:
public abstract class JClass {
public void printSomething(String a) {
System.out.println(a);
}
}
同样,是否可以创建项目源文件之一的副本,编辑文件中的代码,然后以某种方式强制对正在运行的程序进行更改?
目前我不太关心实际应用。我只是在探索我对编程的不同想法。我也明白这有可能引发各种灾难。编辑正在运行的代码,并在运行中包括类(我不认为会像构建项目时检查其他类一样检查错误),可能会产生非常不可预测的结果。我只是想玩弄这个想法。
也就是说,如果有人有任何有用的警告或需要注意的事情,我将不胜感激。否则,如果人们不回答“这是个坏主意”或“有更简单更好的方法来解决问题”,我将不胜感激。我不是想解决这个问题。我只是在探索这个想法。
那么,这可能吗?
【问题讨论】: