Why does my “marshaller” have to be “static”?
我试图在自己的类中"marshall"和"unmarshall"对象,并使用"marshaller"。
主要方法:
1 2 3 4 5 6 |
将向马歇尔或unmarshall提供实例的"某物"类应:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.io.File; import java.io.Serializable; public class Something implements Serializable { /** * */ private static final long serialVersionUID = 1L; public int value = 2; private File file = new File("something.serial"); private static Marshaller marshaller = new Marshaller(); Something() { value = 3; marshaller.marshalling(file, this); Something anotherThing = (Something) marshaller.unmarshalling(file); System.out.println(anotherThing.value); } } |
号
这里是元帅:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Marshaller { public Marshaller() { } /** * Charge l'objet sérializé d'un fichier si il existe * @param file : le fichier à désérialiser * @return obj : l'instance d'objet désérialisé */ public Object unmarshalling(File file) { Object obj = null; ObjectInputStream ois; try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); ois = new ObjectInputStream(bis); obj = ois.readObject(); ois.close(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } return obj; } /** * Permet d'enregistrer un objet (settings, client...) dans un fichier * @param file : le fichier support de la sérialisation * @param obj : l'instance d'objet à sérialiser * */ public void marshalling(File file, Object obj) { ObjectOutputStream oos; try { oos = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream(file))); oos.writeObject(obj); oos.close(); } catch(IOException e) { e.printStackTrace(); } } } |
在
谢谢你的回答帮助我理解。
祝您今天过得愉快。
附:我应该用"EDOCX1"〔2〕或"EDOCX1"〔3〕这个词吗?
当你序列化对象,所有的对象是从一个到达的对象存储为好,所以他们都必须
1 2 3 4 5 6 | public class Something implements Serializable { private static final long serialVersionUID = 1L; public int value = 2; private File file = new File("something.serial"); private Marshaller marshaller = new Marshaller(); } |
然后到达机场或从任何一类的
当你声明一个
如果你需要一个场的实例,但不想做serialized,你需要将它
和Word
希望这可以帮助你:-)