Jak uzyskać nazwę klasy bez pakietu?


199

W C # mamy Type.FullNamei Type.Namedo uzyskania nazwy typu (w tym przypadku klasy) z przestrzenią nazw lub bez (pakiet w java-world).

Czym jest odpowiednik java Type.Name?

Oczywiście musi istnieć lepszy sposób niż Class.getName()ręczne użycie i usunięcie nazwy pakietu.


1
Szybko go przeszukałem i nie byłem pod wrażeniem pierwszych wyników, które znalazłem w Google, więc uważaj to za darmowy.
Ola Herrdahl

5
Zapomnij o Google! Pierwszym miejscem do poszukiwania odpowiedzi na pytania dotyczące standardowej klasy biblioteki Java są docs Java API (aka Javadocs): java.sun.com/javase/reference/api.jsp
Stephen C

Odpowiedzi:


358

Class.getSimpleName()

Zwraca prostą nazwę klasy bazowej podaną w kodzie źródłowym. Zwraca pusty ciąg, jeśli klasa bazowa jest anonimowa.

Prosta nazwa tablicy to prosta nazwa typu komponentu z dołączonym „[]”. W szczególności prosta nazwa tablicy, której typ komponentu jest anonimowy, to „[]”.

W rzeczywistości usuwa informacje o pakiecie z nazwy, ale jest to przed tobą ukryte.


Odwzorowuje także wewnętrzną nazwę anonimowej klasy na pusty ciąg znaków i robi rzeczy z nazwami klas tablicowych.
Stephen C

4
Nie wiedziałem, że może zwrócić pusty ciąg, a IMHO to wada projektowa. Jeśli nie ma prostej nazwy, powinien zgłosić wyjątek.
finnw

20

Poniższa funkcja będzie działać w JDK w wersji 1.5 i nowszej.

public String getSimpleName()

14

Jeśli używasz StackTraceElement, użyj:

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

System.out.println(simpleClassName);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.