Seringkali saat membuat sebuah program, penting untuk mengetahui isi suatu objek. Untuk tujuan ini, kelas Java Object , kelas Java paling dasar dalam hierarki kelas, mendefinisikan metode toString() khusus . Ia mengembalikan string karakter yang mendeskripsikan objek. Implementasi default metode toString() di Java menghasilkan output seperti ini:
package.class@hashCode
yaitu toString , yang didefinisikan di java.lang.Object memberikan kode hash objek dalam bentuk heksadesimal. Hal ini seringkali tidak terlalu jelas dan berguna. Jadi saat membuat kelas baru, biasanya toString() diganti sehingga string yang dikembalikan berisi nama kelas, nama, dan nilai semua variabel. Mengganti metode toString dengan benar dapat membantu logging dan debugging program Java, ini memberikan informasi berharga dan penting. Sederhananya, metode toString() digunakan di Java untuk mendapatkan objek string yang mewakili nilai objek numerik. Dengan kata lain, ini mengubah angka menjadi string. Jika metode menggunakan tipe data sederhana sebagai argumen, maka objek string dikembalikan yang mewakili nilai tipe data sederhana.
Contoh metode Java toString()
Biasanya jika Anda membuat kelas, selain metode toString() di Java, Anda perlu mengganti metode sama dengan , kode hash , dan bandingkanTo untuk mengetahui cara bekerja dengan objeknya. Namun untuk saat ini, mari fokus pada toString . Dalam kebanyakan kasus, mengirimkan informasi tekstual tentang suatu objek cukup sederhana. Anda hanya perlu memahami apa sebenarnya yang ingin dilihat pengguna saat masuk. Mari kita beri contoh dan membuat Kelas yang mendeskripsikan sebuah titik pada bidang. Ia memiliki dua koordinat: koordinatX, koordinatY. Tentu saja, mereka harus ditampilkan di layar jika pengguna bertanya "objek apa ini" seperti nama kelas itu sendiri. Inilah yang akan kami tunjukkan dalam metode toString() yang diganti . Sekarang kita membuat kelas itu sendiri, bidangnya (koordinat), konstruktor, pengambil untuk mendapatkan koordinat (tentu saja, tidak mungkin untuk membuatnya, tetapi dari sudut pandang penggunaan OOP yang benar, pengambil adalah praktik yang baik). Sekadar ilustrasi, mari kita juga membuat metode yang membuat titik baru — jumlah dari dua titik lainnya, dan juga mengganti metode sama dengan dan kode hash .public class Point implements Comparable<Point> {
private final int coordinateX;
private final int coordinateY;
public Point(final int coordinateX, final int coordinateY) {
this.coordinateX = coordinateX;
this.coordinateY = coordinateY;
}
public int getX() {
return coordinateX;
}
public int getY() {
return coordinateY;
}
public Point sum(final Point that) {
return new Point(coordinateX + that.coordinateX, coordinateY + that.coordinateY);
}
// here we override toString with coordinates and class name
@Override
public String toString() {
return "Point{"
+ "X: " + getX()
+ ", Y: " + getY()
+ '}';
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o == null || o.getClass() != this.getClass()) {
return false;
}
@Override
public int hashCode() {
return coordinateX + coordinateY;
}
Sekarang mari kita buat kelas pengujian dan metode utama. Di sana kami mendapat dua poin dan yang ketiga, yang kami peroleh dari penjumlahan dua poin. Kami menerapkan metode toString pada titik ini dan mencetaknya.
//toString() method demo
public class Test {
public static void main(String[] args) {
Point myPoint1 = new Point(5,7);
Point myPoint2 = new Point(-2, 8);
Point mySum = myPoint1.sum(myPoint2);
//call toString explicitly
System.out.println(mySum.toString());
}
}
Hasil kerja program ini adalah sebagai berikut:
Poin{X:3, Y:15}
Anda sebenarnya tidak perlu memanggil metode toString secara eksplisit , dan seringkali tidak. Untuk memanggil metode toString() , cukup teruskan objek yang diinginkan ke System.out.println . Jadi kelas pengujian kita akan terlihat seperti ini:
//toString method demo
public class Test {
public static void main(String[] args) {
Point myPoint1 = new Point(5,7);
Point myPoint2 = new Point(-2, 8);
Point mySum = myPoint1.sum(myPoint2);
//call toString implicitly
System.out.println(mySum);
}
}
Output dari program ini sama seperti sebelumnya. Bagaimana jika kita tidak mengganti metode toString , tetapi ingin mencetak objeknya? Dalam hal ini, metode toString dari kelas Object akan dipanggil. Dalam contoh kita, jika kita menghapus metode toString dari kelas Point , dan membiarkan semuanya seperti di kelas pengujian, kita akan mendapatkan hasil berikut:
Poin@12
Di sini kita mendapatkan kode hash objek dalam heksadesimal.