Bagaimana cara mendapatkan nama kelas tanpa paket?


199

Di C # kita punya Type.FullNamedanType.Name untuk mendapatkan nama tipe (kelas dalam hal ini) dengan atau tanpa namespace (paket di java-world).

Apa yang setara dengan java Type.Name?

Jelas harus ada cara yang lebih baik daripada menggunakan Class.getName()dan menghapusnya dari nama paket secara manual.


1
Saya melakukan pencarian cepat pada ini dan tidak terkesan dengan hasil pertama yang saya temukan di Google jadi anggap ini sebagai freebie.
Ola Herrdahl

5
Lupakan Google! Tempat pertama untuk mencari jawaban tentang pustaka kelas standar Java adalah Java API docs (alias javadocs): java.sun.com/javase/reference/api.jsp
Stephen C

Jawaban:


358

Class.getSimpleName()

Mengembalikan nama sederhana dari kelas dasar seperti yang diberikan dalam kode sumber. Mengembalikan string kosong jika kelas dasar adalah anonim.

Nama sederhana array adalah nama sederhana dari tipe komponen dengan "[]" ditambahkan. Khususnya nama sederhana array yang tipe komponennya anonim adalah "[]".

Ini sebenarnya menghilangkan informasi paket dari nama, tetapi ini tersembunyi dari Anda.


Ini juga memetakan nama internal kelas anonim ke String kosong dan melakukan hal-hal dengan nama kelas array.
Stephen C

4
Saya tidak tahu itu bisa mengembalikan string kosong, dan IMHO itu cacat desain. Jika tidak ada nama yang sederhana itu harus membuang pengecualian.
finnw

20

Fungsi berikut akan berfungsi di JDK versi 1.5 dan di atasnya.

public String getSimpleName()

14

Jika menggunakan StackTraceElement, gunakan:

String fullClassName = stackTraceElement.getClassName();
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);

System.out.println(simpleClassName);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.