pobieranie tylko nazwy klasy Class.getName ()

88

Jak mogę uzyskać nazwę klasy

String.class.getName()  returns java.lang.String


Interesuje mnie tylko ostatnia część, tj. Tylko łańcuch
znaków. Każdy interfejs API może to zrobić?

akshay
źródło
4
Java ma świetną dokumentację online. Przykładem jest strona, do której prowadzi link andyb poniżej. Za każdym razem, gdy masz pytanie dotyczące dokładnej funkcjonalności dostępnej w klasie lub pakiecie, javadoc są tak łatwe do znalezienia, jak wyszukiwanie w Google „java 6 <kwestionowany pakiet lub klasa>”.
jpm,

Odpowiedzi:

185

Class.getSimpleName()

andyb
źródło
9
String.class.getSimpleName () -> String, gdzie jako String.class.getName () -> java.lang.String
Peter Dietz
Dziękuję, @andyb getSimpleName()jest łatwiejszy w dostępie do nazwy klasy bez nazwy pakietu. Składnia: object.getClass().getSimpleName() Przykładowy kod
Abhijeet
Jak przypisać go do statycznej zmiennej łańcuchowej. pokazuje błąd w Android Studio.
MohanRaj S
Nie działa dla klas wewnętrznych: spowoduje to usunięcie nazwy klasy otaczającej, a nie tylko pakietu.
toolforger
9

Poniższe oba sposoby działają dobrze.

System.out.println("The Class Name is: " + this.getClass().getName());
System.out.println("The simple Class Name is: " + this.getClass().getSimpleName());

Wyjście jak poniżej:

Nazwa klasy to: package.Student

Prosta nazwa klasy to: Student

Venkatesh K
źródło
7

lub programowo

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);
Mauricio Quintana
źródło
1
Pomogło mi to, ponieważ nie mogę używać getSimpleName () z mojego frameworka ... Tq
Imposter
1
Ponadto podejście programistyczne daje rozsądne wyniki dla klas anonimowych.
Hollis Waite
@Imposter, używasz czegoś wcześniejszego niż Java 1.5?
Stealth Rabbi
Musisz zająć się przypadkiem, w którym nie .znaleziono.
eckes
@eckes jeśli kropka nie zostanie znaleziona, wynikiem będzie -1, dodanie 1 da ci podciąg zaczynający się od indeksu 0 - dokładnie to, czego potrzebujesz w tym przypadku. (Właśnie to przetestowałem int[], wynik jest "[I".)
toolforger
4

Możesz użyć następującej prostej techniki drukowania dziennika z nazwą klasy.

private String TAG = MainActivity.class.getSimpleName();

Załóżmy, że musimy sprawdzić nadchodzącą wartość zmiennej w metodzie, a następnie możemy użyć loga takiego jak poniżej:

private void printVariable(){
Log.e(TAG, "printVariable: ");
}

Znaczenie tej linii jest takie, że możemy sprawdzić nazwę metody wraz z nazwą klasy. Aby napisać ten typ dziennika.

napisz: - loge i Enter.

wydrukuje na konsoli

E/MainActivity: printVariable:
Kailas Bhakade
źródło
2

Social.class.getSimpleName ()

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 prostą nazwą tablicy, której typ komponentu jest anonimowy, jest „[]”.

LSD25
źródło
1

Oto sposób, w jaki Groovy uzyskuje dostęp do właściwości obiektu:

this.class.simpleName    # returns the simple name of the current class
eaglet3d
źródło
-2

Uzyskaj prostą nazwę zamiast ścieżki.

String onlyClassName =  this.getLocalClassName(); 

wywołaj powyższą metodę w onCreate

AndroidGeek
źródło
Niekompletne rozwiązanie.
PLG
Jeśli nie podasz źródła dla metody OP, nie będziesz mógł jej użyć.
eckes