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.