Memahami Pengekodan Jenis Tatasusunan Objek
Apabila mendapatkan semula objek daripada panggilan fungsi dan mencetak perwakilan rentetannya, anda mungkin menghadapi tatatanda yang membingungkan seperti "[Ljava.lang.Object;". Ungkapan yang membingungkan ini mewakili jenis kelas objek, tetapi bagaimanakah kita menghuraikan format samarnya?
Skim pengekodan jenis kelas diperincikan dengan elegan dalam Class.getName(): untuk jenis rujukan (tidak termasuk tatasusunan), nama binari dikembalikan. Jenis primitif dan kekosongan diberikan kata kunci Java mereka. Walau bagaimanapun, untuk tatasusunan, pengekodan mereka mengambil bentuk yang unik.
Pengekodan Tatasusunan: Memecahkan [ Ljava.lang.Object; ]
"Ljava.lang.Object;" ialah tatatanda untuk kelas Java yang mewakili tatasusunan Objek, juga dikenali sebagai Object[].class. Corak penamaan mengikut peraturan berikut:
Memahami Notasi Pengekodan
Formatnya adalah seperti berikut:
Pengekodan Jenis Elemen
boolean Z
bait B
char C
double D
float F
int I
panjang J
S pendek
kelas atau antara muka Lclassname;
Contoh Penyahkodan
Untuk ilustrasi, pertimbangkan contoh berikut:
Mengapa Tatasusunan Mengatasi toString()
Bertentangan dengan jangkaan, kaedah toString() untuk tatasusunan menyimpang daripada pelaksanaan kelas Objek. Ia mengembalikan rentetan dalam format yang disebutkan di atas kerana tatasusunan tidak mengatasi kaedah ini. Oleh itu, kaedah yang diwarisi daripada Object, dinyatakan seperti berikut, digunakan:
String.class mengembalikan rentetan dalam format: getClass().getName() '@' Integer.toHexString(hashCode())
Perwakilan Rentetan Array Alternatif
Kelas java.util.Arrays menawarkan lebih banyak perwakilan rentetan yang mesra pengguna untuk tatasusunan:
Sumber Berguna Tambahan
Atas ialah kandungan terperinci Apakah Maksud \'[Ljava.lang.Object;\' dalam Pengekodan Jenis Tatasusunan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!