Accessor Methods
Merupakan sebuah metode yang digunakan untuk mengembalikan nilai dari sebuah private field. Skema ini biasanya ditandai dengan awalan nama "get", sebagai contoh, misalnya kita akan menambahkan metode accessor untuk firstname, middleNames dan lastname:
//Accessor for firstName
public String getFirstName()
{
return firstName;
}
//Accessor for middleNames
public String getMiddlesNames()
{
return middleNames;
}
//Accessor for lastName
public String getLastName()
{
return lastName;
}

Accessors dan Mutators Pemrograman Java
Metode ini selalu mengembalikan value/nilai dengan tipe data yang sama sesuai korespondensi private fieldnya, misal (String);
public class PersonExample
{
public static void main(String[] args)
{
Person dave = new Person("Dave", "Bob Bill", "Davidson", "12 Pall Mall");
System.out.println(dave.getFirstName() + " " + dave.getMiddlesNames() + " " + dave.getLastName());
}
}
Mutator Methods
Merupakan sebuah metode yang digunakan untuk menetapkan nilai dari sebuah private field. Skema ini biasanya ditandai dengan awalan nama "set", sebagai contoh, misalnya kita akan menambahkan mutator fields untuk address dan username:
//Mutator for address
public void setAddress(String address)
{
this.address = address;
}
//Mutator for username
public void setUsername(String username)
{
this.username = username;
}
"This" untuk mengakses komponen dalam class tersebut, dan "this" adalah kidah lama java (versi 1), versi terbaru tanpa this pun bisa.
Metode ini tidak memiliki nilai balik (return), sebab metode ini merupakan pengaturan parameter yang akan digunakan oleh koresponden private fieldnya. Sebagai contoh, sekarang kita akan coba memodifikasi nilai-nilai pada address dan username untuk seseorang;
public class PersonExample
{
public static void main(String[] args)
{
Person dave = new Person("Dave", "Bob Bill", "Davidson", "12 Pall Mall"); dave.setAddress("256 Bow Street"); dave.setUsername("DDavidson");
}
}
Mengapa Menggunakan Accessors and Mutators?
Hal penting yang perlu diingat adalah bahwa kita bisa menyembunyikan data dari objek sebanyak mungkin. Buffer tambahan yang disediakan oleh metode ini memungkinkan kita untuk:
- Bagaimana sebuah data dapat dirubah dari balik layar
- Menerapkan validasi nilai-nilai yang telah kita atur di dalam field.
Katakanlah kita akan memodifikasi bentuk penyimpanan middle names. Tidak hanya satu String tapi kita coba gunakan array String;
private String firstName;
//Now using an array of Strings
private String[] middleNames;
private String lastName;
private String address;
private String username;
public Person(String firstName, String middleNames, String lastName, String address)
{
this.firstName = firstName;
//create an array of Strings
this.middleNames = middleNames.split(" ");
this.lastName = lastName;
this.address = address;
this.username = "";
}
//Accessor for middleNames
public String getMiddlesNames()
{
//return a String by appending all the Strings of middleNames together
StringBuilder names = new StringBuilder();
for(int j=0;j < (middleNames.length-1);j++)
{
names.append(middleNames[j] + " ");
}
names.append(middleNames[middleNames.length-1]);
return names.toString();
}
Implementasi kedalam object telah dirubah namun pengaksesan class diluar itu tidak bisa mempengaruhi, inilah yang kita sebut sebagai metode "remains exactly the same" (tetap sama persis):
public class PersonExample
{
public static void main(String[] args)
{
Person dave = new Person("Dave", "Bob Bill", "Davidson", "12 Pall Mall"); System.out.println(dave.getFirstName() + " " + dave.getMiddlesNames() + " " + dave.getLastName());
}
}
Atau, katakanlah sebuah aplikasi menggunakan object Orang dan hanya dapat menerima username orang itu saja maksimal 10 karakter, maka kita bisa menambahkan validasi mutator setUsername untuk memastikan apakan username yang diinputkan sesuai syarat.
public void setUsername(String username)
{
if (username.length() > 10)
{
this.username = username.substring(0,10);
}
else
{
this.username = username;
}
}
Sekarang, jika username yang diinputkan melebihi 10 karakter, maka secara otomatis akan terpotong.
Reference: