我是java初學者,我需要幫助。我有兩個類,一個(歌曲)看到代碼是第二個(日期)的子級。歌曲是可序列化的,而日期是不可序列化的(我打算保持日期類的這種方式)。我使用 Date 中名為 setDate 的方法,它需要三個參數,月、日和年,所有參數都是整數。我正在嘗試使用自定義序列化(使用 readObject 和 writeObject 方法等)。package assignment7;import java.io.IOException;import java.io.NotSerializableException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;/**** @author Owner*/public class Song extends Date implements Serializable{ private String title; private String artist; private String genre; //private String dateOpened; //private Date obj = new Date(); public Song(){ } public void setTitle(String t) { title = t; }public void setArtist(String a) { artist = a;}public void setGenre(String g) { genre = g;}public void setDateOpen(int m, int d, int y){ setDate(m, d, y);}public void setDayOpen(){}public void setDayOpen(){Date}public void setDayOpen(){}public String getDateOpen(){ return getDate();}public String getTitle() { return title;}public String getArtist() { return artist;}public String getGenre() { return genre;}private void writeObject( ObjectOutputStream out ) throws IOException, ClassNotFoundException, NotSerializableException { out.defaultWriteObject(); out.writeObject(getTitle()); out.writeObject(getArtist()); out.writeObject(getGenre()); out.writeObject(getDateOpen());}private void readObject( ObjectInputStream in ) throws IOException, NotSerializableException, ClassNotFoundException { in.defaultReadObject(); setTitle((String)in.readObject()); setArtist((String)in.readObject()); setGenre((String)in.readObject()); setDateOpen((int)in.readObject(), (int)in.readObject(), (int)in.readObject());}}問題是 getDateOpen 方法返回一個字符串,而 setDateOpen 需要 3 個整數。有沒有辦法讓 readObjects() 讀取 3 個整數并仍然輸出序列化字符串?(iv'e還包括我的老師說不要改變的日期課程)
1 回答

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
如果該Date
類型僅提供String
日期,那么您需要在某個時候傳遞該日期。要么在 中解析writeObject
并存儲int
s,要么保持String
串行形式并在 中解析readObject
。
Date
僅提供字符串化日期可能不是一個好的設計選擇。而且 a 也不可能Song
是 的子類型Date
(除非存在一些關鍵的性能問題,這似乎不太可能)。
還要避免 Java 序列化。JSON 似乎是常見的替代方案。
添加回答
舉報
0/150
提交
取消