Я новичок в сериализации kryo и хочу выполнить некоторую двоичную сериализацию и десериализацию с использованием списка массивов.
Это то, что я пробовал до сих пор.
Kryo2Simpan.java (Сериализация)
public static void main(String[] args) {
Kryo kryo = new Kryo();
kryo.register(Mahasiswa.class);
ArrayList<Mahasiswa> mahasiswas = new ArrayList<>();
mahasiswas.add(new Mahasiswa("Tejo", "IT", "Yogyakarta", 1315004));
mahasiswas.add(new Mahasiswa("Rizky", "IT", "Bandung", 1314031));
mahasiswas.add(new Mahasiswa("Rosa", "IT", "Makassar", 1315009));
mahasiswas.add(new Mahasiswa("Dani", "IT", "Cimahi", 1315016));
try{
Output output = new Output(new FileOutputStream("file"));
kryo.writeObject(output, mahasiswas);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
и вот код десериализации
Kryo2Baca.Java (десериализация)
public static void main(String[] args){
SpringApplication.run(Kryo2Simpan.class, args);
Kryo kryo = new Kryo();
kryo.register(Mahasiswa.class);
ArrayList<Mahasiswa> mahasiswas = new ArrayList<>();
try {
Input input = new Input(new FileInputStream("file"));
kryo.readObject(input, Mahasiswa.class);
input.close();
for (Mahasiswa mahasiswa : mahasiswas){
System.out.println(mahasiswa);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
РЕДАКТИРОВАТЬ: вот мой класс Mahasiswa
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.KryoSerializable;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Mahasiswa implements KryoSerializable
{
private String nama, jurusan, alamat;
private int nim;
public Mahasiswa(String nama, String jurusan, String alamat, int nim) {
this.nama = nama;
this.jurusan = jurusan;
this.alamat = alamat;
this.nim = nim;
}
public Mahasiswa() {}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getJurusan() {
return jurusan;
}
public void setJurusan(String jurusan) {
this.jurusan = jurusan;
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public int getNim() {
return nim;
}
public void setNim(int nim) {
this.nim = nim;
}
@Override
public String toString() {
return "Mahasiswa{" +
"nama= '" + getNama() + "'" +
", jurusan= '" + getJurusan() + "'" +
", alamat= '" + getAlamat() + "'" +
", nim= " + getNim() + "}";
}
@Override
public void write(Kryo kryo, Output output) {
output.writeString(nama);
output.writeString(alamat);
output.writeString(jurusan);
output.writeInt(nim);
}
@Override
public void read(Kryo kryo, Input input) {
nama = input.readString();
alamat = input.readString();
jurusan = input.readString();
nim = input.readInt();
}
Когда я запускаю класс сериализации, он работает хорошо, и я получил двоичный файл, но когда я хочу прочитать этот файл снова, он ничего не выводит,и когда я наводил курсор на mahasiswas
, я получал ошибку Collection 'mahasiswas' is always empty
.Что не так с моим кодом?Заранее спасибо.