Можно ли каким-то образом «импортировать» новый класс 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);
}
}
Точно так же можно было бы создать копию одного из исходных файлов проекта, отредактировать код в файле, а затем каким-то образом принудительно внести изменения в работающую программу?
На данный момент меня не особо заботит практическое применение. Я просто изучаю различные идеи, которые у меня были в отношении программирования. Я также понимаю, что это может привести к разного рода катастрофе. Редактирование запущенного кода и включение классов «на лету» (которые, я не думаю, будут проверяться на наличие ошибок, как и другие классы при создании проекта), может иметь очень непредсказуемые результаты. Я просто хочу поиграть с этой идеей.
Тем не менее, если у кого-то есть ПОЛЕЗНЫЕ предупреждения или вещи, на которые следует обратить внимание, я был бы признателен. В противном случае я был бы признателен, если бы люди не отвечали: «Это плохая идея» или «Есть более простые и лучшие способы решения проблем». Я НЕ пытаюсь решить проблему с этим. Я только изучаю идею.
Возможно ли это?