Написание и реализация новых файлов классов Java во время выполнения

Можно ли каким-то образом «импортировать» новый класс 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);
    }
}

Точно так же можно было бы создать копию одного из исходных файлов проекта, отредактировать код в файле, а затем каким-то образом принудительно внести изменения в работающую программу?

На данный момент меня не особо заботит практическое применение. Я просто изучаю различные идеи, которые у меня были в отношении программирования. Я также понимаю, что это может привести к разного рода катастрофе. Редактирование запущенного кода и включение классов «на лету» (которые, я не думаю, будут проверяться на наличие ошибок, как и другие классы при создании проекта), может иметь очень непредсказуемые результаты. Я просто хочу поиграть с этой идеей.

Тем не менее, если у кого-то есть ПОЛЕЗНЫЕ предупреждения или вещи, на которые следует обратить внимание, я был бы признателен. В противном случае я был бы признателен, если бы люди не отвечали: «Это плохая идея» или «Есть более простые и лучшие способы решения проблем». Я НЕ пытаюсь решить проблему с этим. Я только изучаю идею.

Возможно ли это?

7
задан Jonathan 30 March 2011 в 23:47
поделиться