Сохранить объект Jcodemodel после выхода

У меня проблема с JCodeModel (SUN). Моя программа запускается каждый день, и я хочу добавить некоторую функцию в классы, которые были созданы до текущего запуска.

JcodeModel поддерживает это? Если нет, есть ли возможность сохранить объект JCodemodel во внешнем файле, загрузить предыдущую модель JcodeModel, а затем добавить новые функции?

Спасибо.


person Or Smith    schedule 05.01.2014    source источник
comment
Ваша программа генерирует исходные классы, к которым вы хотите добавить функции через JCodeModel?   -  person John Ericksen    schedule 06.01.2014
comment
Из чего изначально генерируется ваша программа? IE: читает ли ваша программа модель или дескриптор, который указывает ей, как генерировать код?   -  person John Ericksen    schedule 07.01.2014


Ответы (1)


Вы можете сохранить экземпляр в файл, используя ObjectOutputStream. а затем прочитайте и создайте его с помощью ObjectInputStream. Пока вы контролируете систему и можете гарантировать, что версия не изменится в одночасье, это должно быть безопасным (хотя и необычным).

В этом руководстве показано, как его использовать:

import java.io.*;
public class ObjectOutputStreamDemo {
   public static void main(String[] args) {
     String s = "Hello world!";
     int i = 897648764;
     try {

       // create a new file with an ObjectOutputStream
       FileOutputStream out = new FileOutputStream("test.txt");
       ObjectOutputStream oout = new ObjectOutputStream(out);

       // write something in the file
       oout.writeObject(s);
       oout.writeObject(i);

       // close the stream
       oout.close();

       // create an ObjectInputStream for the file we created before
       ObjectInputStream ois =
             new ObjectInputStream(new FileInputStream("test.txt"));

       // read and print what we wrote before
       System.out.println("" + (String) ois.readObject());
       System.out.println("" + ois.readObject());

  } catch (Exception ex) {
     ex.printStackTrace();
  }
}
}
person Jan Galinski    schedule 06.01.2014
comment
У меня есть исключение: java.io.NotSerializableException: com.sun.codemodel.JCodeModel - person Or Smith; 06.01.2014
comment
.... JCodeModel не сериализуем... это плохо, тогда это не сработает... извините! - person Jan Galinski; 07.01.2014