Paket olmadan bir sınıfın adı nasıl alınır?


206

C # 'Elimizdeki Type.FullNameve Type.Nameya ad (java-Dünyada paketi) olmadan (bu durumda sınıfın) bir türünün adını almak için.

Java'nın karşılığı nedir Type.Name?

Açıkçası Class.getName()paket adını elle kullanmaktan ve çıkarmaktan daha iyi bir yol olmalı .


1
Bu konuda hızlı bir arama yaptım ve Google'da bulduğum ilk sonuçlardan etkilenmedim, bu yüzden bunu bir freebie olarak düşünün.
— Ola Herrdahl

5
Google'ı unutun! Görünümüne ilk etapta Java standart sınıf kitaplığında ilgili yanıtlar da (javadocs aka) Java API dosyaları şunlardır: java.sun.com/javase/reference/api.jsp
— Stephen C

Yanıtlar:


371

Class.getSimpleName()

Kaynak kodda verildiği şekliyle temel alınan sınıfın basit adını döndürür. Temel sınıf anonim ise boş bir dize döndürür.

Bir dizinin basit adı, "[]" eklenmiş bileşen türünün basit adıdır. Özellikle, bileşen türü anonim olan bir dizinin basit adı "[]" dir.

Aslında paket bilgilerini isimden çıkarıyor, ancak bu sizden gizleniyor.


Ayrıca, anonim bir sınıfın dahili adını boş bir String ile eşler ve dizi sınıfı isimleriyle işler yapar.
— Stephen C

4
Boş bir dize döndürebileceğini bilmiyordum ve IMHO bu bir tasarım hatası. Basit bir isim yoksa, bir istisna atmalıdır.
— finnw

İç sınıflar için, yalnızca paketi değil aynı zamanda dış sınıfın adını da çıkarır. (Diğer davranışı istedim, bu yüzden bu cevap benim için yanlış.)
— toolforger

20

Aşağıdaki işlev, JDK sürüm 1.5 ve üzerinde çalışacaktır.

public String getSimpleName()

Bu, kabul edilen cevabın bir kopyasıdır, böylece onu kaldırabilirsiniz.
— toolforger

14

StackTraceElement kullanıyorsanız, şunu kullanın:

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

System.out.println(simpleClassName);

Soru, yığın izleme değil, sınıf nesnesine sahip olduğunuz durumla ilgilidir.
— toolforger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.