如何序列化其方法有多个参数的对象

我是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还包括我的老师说不要改变的日期课程)


HUX布斯
浏览 57回答 1
1回答

眼眸繁星

如果该Date类型仅提供String日期,那么您需要在某个时候传递该日期。要么在 中解析writeObject并存储ints,要么保持String串行形式并在 中解析readObject。Date仅提供字符串化日期可能不是一个好的设计选择。而且 a 也不可能Song是 的子类型Date(除非存在一些关键的性能问题,这似乎不太可能)。还要避免 Java 序列化。JSON 似乎是常见的替代方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java