
Sinopsis
Implementasi
Java menggunakan interface Serializable untuk menandakan bahwa class tersebut bersifat serialisasi, karena berbentuk interface maka bisa digunakan bebarengan dengan inheritance dari class yang lain. Untuk mempermudah hal tersebut kalian gunakan teknik POJO plain old java object yang berupa setter dan getter. Dimana setter berfungsi untuk memberikan sebuah nilai dan getter untuk mendapatkan nilai. Misalkan kita mempunyai sebuah class dengan nama DataPerhitungan.java yang berfungsi untuk menyimpan sebuah array dari hasil keluaran proses pelatihan machine learning berupa bobot hidden dan bobot output.
Oiya untuk membedakan dengan extension yang sudah ada di Windows/Linux maka extension yang digunakan *.serial (bebas sih kalian mau menggunakan extension apa saja koq), jangan lupa tetap menggunakan Constructor tapi dikosongkan saja body nya tanpa statement apapun pada class DataPerhitungan.java
import java.io.Serializable; /** * * @author www.softscients.com */ public class DataPerhitungan implements Serializable{ private double [][] bobotHidden; private double [][] bobotOutput; public DataPerhitungan () { //constructor dibuat kosong saja } public DataPerhitungan(double [][] hidden, double [][]output) { this.bobotHidden = hidden; this.bobotOutput = output; } public double[][] getBobotHidden() { return bobotHidden; } public void setBobotHidden(double[][] bobotHidden) { this.bobotHidden = bobotHidden; } public double[][] getBobotOutput() { return bobotOutput; } public void setBobotOutput(double[][] bobotOutput) { this.bobotOutput = bobotOutput; } }
Setelah kalian membuat class berbentuk POJO diatas, kita akan coba seperti berikut dibawah ini yang terdiri dari operasi menyimpan dan membaca kembali file tersebut. Mari kita implementasi untuk operasi tulis dan baca seperti berikut yang menggunakan 3 method yaitu simpan, baca, tampil
import java.io.*; /** * * @author www.softscients.com */ public class DemoSerialisasi { /** * @param args the command line arguments */ public static void main(String[] args) { DemoSerialisasi.simpan(new File("D:/data.serial")); DemoSerialisasi.baca(new File("D:/data.serial")); } public static void simpan(File file) { System.out.println("File disimpan di : "+file.getAbsolutePath()); double [][] hidden = new double [][]{{1,2,3},{4,5,6}}; double [][] output = new double [][]{{7,8,9},{10,11,12}}; DataPerhitungan data = new DataPerhitungan(); data.setBobotHidden(hidden); data.setBobotOutput(output); FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new FileOutputStream(file.getAbsolutePath()); out = new ObjectOutputStream(fos); out.writeObject(data); //class disimpan out.close(); } catch(IOException ex) { ex.printStackTrace(); } } public static void baca(File file ) { System.out.println("Buka disimpan di : "+file.getAbsolutePath()); DataPerhitungan data = new DataPerhitungan(); FileInputStream fis=null; ObjectInputStream in=null; try { fis=new FileInputStream(file.getAbsolutePath()); in =new ObjectInputStream(fis); try { data = (DataPerhitungan) in.readObject(); //casting data } catch (ClassNotFoundException ex) { ex.printStackTrace(); } in.close(); }catch(IOException ex) { ex.printStackTrace(); } DemoSerialisasi.tampil(data); } public static void tampil(DataPerhitungan data) { //menampilkan hidden System.out.println("Bobot Hidden"); for(int i=0;i<data.getBobotHidden().length;i++) { for(int j=0;j<data.getBobotHidden()[0].length;j++) { System.out.print(data.getBobotHidden()[i][j]+"\t"); } System.out.println(""); } //menampilkan output System.out.println("Bobot Output"); for(int i=0;i<data.getBobotOutput().length;i++) { for(int j=0;j<data.getBobotOutput()[0].length;j++) { System.out.print(data.getBobotOutput()[i][j]+"\t"); } System.out.println(""); } } }
Hasil keluaran dari serialisasi yaitu
File disimpan di : D:\data.serial Buka disimpan di : D:\data.serial Bobot Hidden 1.0 2.0 3.0 4.0 5.0 6.0 Bobot Output 7.0 8.0 9.0 10.0 11.0 12.0
Dengan teknik tersebut kalian bisa menyimpanan apapun tidak hanya array saja! Alangkah lebih baik kalian harus menggunakan class yang implementasi dari Serializable seperti cara diatas