cara mengubah variabel private


sebenarnya dalam konsep OOP ada yang namanya visibility atau penampakan, heheh kayak apa aja…

biasanya yang diketahui dalam OOP tuh ada 3 visibility, public, private dan protected, hanya dalam java ada satu lagi yaitu default, hanya yang default ini memang jarang sekali dipakai. nah sekarang pertanyaannya apakah kita bisa mengubah nilai sebuah variabel private? padahal dalam konsep OOP sendiri harusnya variabel private itu tidak bisa dirubah kecuali oleh class itu sendiri, artinya dari luar class tidah bisa mengubah, boro-boro mengubah mengakses pun tidak bisa, namun ini menjadi pengecualian dalam Java 😀

sekarang kita coba buat sebuah class yang Name yang memiliki variabel private yaitu firstName dan lastName :

package echo.khannedy.privatevariable.domain;

public class Name {

    private String firstName;
    private String lastName;

    @Override
    public String toString() {
        return firstName + " " + lastName;
    }
}

setelah itu kita buat class service untuk memanipulasi variabel pada class Name sebelumnya :

package echo.khannedy.privatevariable.service;

import echo.khannedy.privatevariable.domain.Name;
import java.lang.reflect.Field;

public class NameService {

    public void changeFirstName(Name name, String firstName) {
        change(name, "firstName", firstName);
    }

    public void changeLastName(Name name, String lastName) {
        change(name, "lastName", lastName);
    }

    private void change(Object object, String fieldName, Object value) {
        try {
            Field[] fields = Name.class.getDeclaredFields();
            for (Field field : fields) {
                if (field.getName().equals(fieldName)) {
                    field.setAccessible(true);
                    field.set(object, value);
                }
            }
        } catch (Exception e) {
        }
    }
}

sekarang kita buat class utama untuk menjalankannya :

 
package echo.khannedy.privatevariable;

import echo.khannedy.privatevariable.domain.Name;
import echo.khannedy.privatevariable.service.NameService;

public class Main {

    public static void main(String[] args) {

        NameService service = new NameService();

        Name name = new Name();

        System.out.println(name);

        service.changeFirstName(name, "Eko Kurniawan");
        service.changeLastName(name, "Khannedy");

        System.out.println(name);
    }
}

jika dijalankan, maka akan terlihat hasilnya seperti ini :

run:
null null
Eko Kurniawan Khannedy
BUILD SUCCESSFUL (total time: 0 seconds)

bisa kita lihat sebelumnya nilai firstName dan lastName adalah null, dan setelah dimanipulasi menggunakan class NameService, mana firstName menjadi “Eko Kurnaiwan” dan lastName menjadi “Khannedy”, ini menandakan bahwa memang variabel private bisa dimanipulasi 😀

download sourcecode lengkapnya disini :

http://bajigur.googlecode.com/files/private-variable.zip

Iklan

3 pemikiran pada “cara mengubah variabel private

  1. Mas echo the real java programer

    Mas Echo lebih hebat dari frans thamura,Thomas wirahadikusumah,samuel franklyn,Endy muhardin, sama ifnu

    Mas echo pokoke top habis dehh……………………………………..

    Harusnya orang orang yang disebutkan diatas itu meniru langkah Mas echo, jangan melulu cari fulus

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s