Java memungkinkan kita untuk me-load class yang kita inginkan pada saat aplikasi kita sedang berjalan. Jadi class yang akan digunakan itu berbeda-beda tergantung business logic yang kita gunakan. Di source code program yang kita buat, kita tidak menulis secara hard-code class apa yang akan digunakan. Nah inilah yang dinamakan dengan dynamic class loading.

Sekarang langsung saja saya berikan contohnya. Misalkan program yang diminta meminta suatu inputan berupa sembarang angka. Lalu jika user memasukkan angka 0-9 maka class yang akan dijalankan adalah class AngkaAsli. Selain angka 0-9 maka class yang akan dijalankan adalah class AngkaLainnya. Pertama buatlah terlebih dahulu sebuah class AngkaAsli.

package com.maniakjava.model;

public class AngkaAsli
{

    public String getAngka(int angka)
    {
        System.out.println("class AngkaAsli dijalankan");
        return "Angka yang dimasukkan adalah " + angka;
    }

} 

Kemudian buat sebuah class AngkaLainnya

package com.maniakjava.model;

public class AngkaLainnya
{
    public String getAngka(int angka)
    {
        System.out.println("class AngkaLainnya dijalankan");
        return "Hasil perkalian dari angka yang dimasukkan adalah " + (angka*angka);
    }
}
 

Lalu buat sebuah class Main

package com.maniakjava.main;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Method;

public class Main
{
    public static void main(String[] args)
    {
        String angka="";
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        int x=0;
        boolean flag = false;
        String javaClass="";
        do
        {
            System.out.print("masukkan angka : ");
            try
            {
                angka = br.readLine();
                x = Integer.parseInt(angka);
                flag=true;

                if(x>=0 && x<=9)
                    javaClass = "com.maniakjava.model.AngkaAsli";
                else
                    javaClass = "com.maniakjava.model.AngkaLainnya";

                ClassLoader classLoader = Main.class.getClassLoader();
                Class myClass  = classLoader.loadClass(javaClass);
                Object myInstance = myClass.newInstance();
                Method myMethod = myClass.getMethod("getAngka", new Class[]{int.class});
                Object hasil = myMethod.invoke(myInstance,new Object[] { x });
                System.out.println(hasil.toString());
            }
            catch(Throwable e)
            {
                flag=false;
                System.out.println("Inputan harus berupa angka");
            }
        }while(!flag);
    }
}
 

Selesai, program tinggal dijalankan.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s