Generic Class and Serialization
Generic Class and Serialization
SERIALIZATION
TF4235- Pemrograman Berorientasi Obyek
Informatics Department – Petra Christian University
GENERIC CLASS
• Generic Class adalah konsep yang mengijinkan suatu class atau interface memiliki
tipe parameter dengan berbagai macam tipe data.
• Class Generic ini diterapkan sejak java versi 5.
• Class Generic dapat didefinisikan pada sebuah class, interface ataupun method,
• Programmer dapat mengaplikasikannya dengan menggunakan re-use code.
WHY USING GENERIC?
• Pengecekan lebih baik jika dilakukan pada saat compile time.
• Mengeliminasi proses casting.
• Memungkinkan Programmers untuk meng-implementasikan generic
algorithms.
GENERIC CLASS : SYNTAX
• Menggunakan kurung < dan > dan menggunakan 1 karakter capital biasanya menggunakan
huruf T (=type)
void method(){
}
}
GENERIC METHOD : SYNTAX
• Menggunakan kurung < dan > dan menggunakan 1 karakter capital biasanya
menggunakan huruf T (=type)
class ClassName {
}
}
GENERIC CLASS: EXAMPLE
KelasGeneric.java
class KelasGeneric<T> {
Hasil:
GENERIC CLASS <MULTIPLE>:
EXAMPLE
Test.java
class Test<T, U>
{
T obj1; // An object of type T
U obj2; // An object of type U
TestM.java
// A Simple Java program to show working of user defined
// Generic functions
class TestM
{
// A Generic method example
static <T> void genericDisplay (T element)
{
System.out.println(element.getClass().getName() +
" = " + element);
}
GENERIC METHOD: EXAMPLE
// Demo method
public static void main(String[] args)
{
// Calling generic method with Integer argument
genericDisplay(11);
// Default constructor
public Demo(int a, String b)
{
this.a = a;
this.b = b;
}
}
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
Testing.java
import java.io.*;
class Testing
{
public static void main(String[] args)
{
Demo object = new Demo(1, "Hallo Guys");
String filename = "file.ser";
// Serialization
try
{
//Saving of object in a file
FileOutputStream file = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(file);
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
out.close();
file.close();
catch(IOException ex)
{
System.out.println("IOException is caught");
}
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
Demo object1 = null;
// Deserialization
try
{
// Reading the object from a file
FileInputStream file = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(file);
in.close();
file.close();
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
System.out.println("Object has been deserialized ");
System.out.println("a = " + object1.a);
System.out.println("b = " + object1.b);
}
catch(IOException ex)
{
System.out.println("IOException is caught");
}
catch(ClassNotFoundException ex)
{
System.out.println("ClassNotFoundException is caught");
}
}
}
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
Hasil:
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
Bytecode File:
SERIALIZATION AND DESERIALIZATION:
EXAMPLE
Bytecode File:
COPY CONSTRUCTOR
• Suatu copy constructor dalam sebuah Java class adalah sebuah constructor yang
men-create sebuah object menggunakan object lain yang ada dalam Java class yang
sama.
• Hal ini sangat membantu jika ingin membuat copy dari object yang sangat complex,
atau kalau ingin membuat deep copy dari object yang sudah ada.
COPY CONSTRUCTOR: EXAMPLE
Complex.java
class Complex {
// Overriding the toString of Object class
private double re, im; @Override
public String toString() {
// A normal parametrized constructor return "(" + re + " + " + im + "i)";
public Complex(double re, double im) { }
this.re = re; }
this.im = im;
}
// copy constructor
Complex(Complex c) {
System.out.println("Copy constructor called");
re = c.re;
im = c.im;
}
COPY CONSTRUCTOR: EXAMPLE
Main.java
public class Main {
Bytecode File:
CLONE OF CONSTRUCTOR
• Object cloning adalah salah satu cara untuk meng-create exact copy dari sebuah
object.
• Method clone() dari class Object digunakan untuk meng-clone atau mengcopy
sebuah object.
• Interface java.lang.Cloneable harus diimplementasikan oleh class yang object
clone nya akan dicreate.
• Jika tidak meng-implementasikan Cloneable interface, method clone() akan men-
generate CloneNotSupportedException.
CLONE CONSTRUCTOR : SYNTAX
• Method clone() didefinisikan dalam Object class.
• Syntax dari method clone() adalah sebagai berikut:
}
CLONE CONSTRUCTOR : EXAMPLE
Student18.java
class Student18 implements Cloneable{
int rollno;
String name;
Student18 s2=(Student18)s1.clone();
System.out.println(s1.rollno+" "+s1.name);
System.out.println(s2.rollno+" "+s2.name);
switch(myVar) {
case LOW:
System.out.println("Low level");
break;
case MEDIUM:
System.out.println("Medium level");
break;
Hasil:
case HIGH:
System.out.println("High level");
break;
}
}
}
LOOP THROUGH AN ENUM
• Enum type punya method values(), yang akan mengembalikan suatu “array of all enum
constants”.
• Method ini sangat berguna jika kita membutuhkan suatu loop untuk mengakses seluruh
anggota dari enum.
for (Level myVar : Level.values()) {
System.out.println(myVar);
}
DIFFERENCE BETWEEN ENUMS
AND CLASSES
• Enum dapat, seperti sebuah class, memiliki attributes dan methods. Bedanya
hanyalah pada enum constants bersifat public, static dan final (unchangeable -
cannot be overridden).
• Enum tidak dapat digunakan untuk create objects, dan tidak dapat me-extend class
yang lain (namun dapat me-implement interfaces).