nur den Namen der Klasse Class.getName () abrufen

85

Wie kann ich den Namen der Klasse bekommen

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


Ich bin nur daran interessiert, den letzten Teil zu bekommen, dh nur String.
Kann eine API das?

Akshay
quelle
4
Java hat eine großartige Online-Dokumentation. Die Seite, die andyb unten verlinkt hat, ist ein Beispiel. Jedes Mal, wenn Sie Fragen zur genauen Funktionalität einer Klasse oder eines Pakets haben, sind die Javadocs so leicht zu finden wie das Googeln von "Java 6 <Paket oder Klasse in Frage>".
Jpm

Antworten:

180

Class.getSimpleName()

andyb
quelle
9
String.class.getSimpleName () -> String, wobei als String.class.getName () -> java.lang.String
Peter Dietz
Vielen Dank, @andyb getSimpleName()ist einfacher, auf den Klassennamen abzüglich des Paketnamens zuzugreifen. Syntax: object.getClass().getSimpleName() Beispielcode
Abhijeet
So weisen Sie es einer statischen Zeichenfolgenvariablen zu. Es zeigt einen Fehler in Android Studio.
MohanRaj S
Funktioniert nicht für innere Klassen: Dadurch wird der Name der einschließenden Klasse entfernt, nicht nur das Paket.
Werkzeugschmiede
9

Die folgenden beiden Möglichkeiten funktionieren einwandfrei.

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

Ausgabe wie folgt:

Der Klassenname lautet: package.Student

Der einfache Klassenname lautet: Student

Venkatesh K.
quelle
7

oder programmatisch

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);
Mauricio Quintana
quelle
1
Dies hat mir geholfen, da ich getSimpleName () nicht aus meinem Framework verwenden kann ... Tq
Imposter
1
Der programmatische Ansatz liefert auch vernünftige Ergebnisse für anonyme Klassen.
Hollis Waite
@Imposter Sie verwenden etwas früher als Java 1.5?
Stealth Rabbi
Sie müssen den Fall behandeln, in dem keine .gefunden wird.
eckes
@eckes Wenn der Punkt nicht gefunden wird, ist das Ergebnis -1. Wenn Sie 1 hinzufügen, erhalten Sie eine Teilzeichenfolge ab Index 0 - genau das, was Sie in diesem Fall benötigen. (Ich habe das gerade mit getestet int[], das Ergebnis ist "[I".)
Toolforger
4

Sie können die folgende einfache Technik zum Drucken von Protokollen mit Klassennamen verwenden.

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

Angenommen, wir müssen den Wert der kommenden Variablen in der Methode überprüfen, dann können wir log wie unten verwenden:

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

Die Bedeutung dieser Zeile ist, dass wir den Methodennamen zusammen mit dem Klassennamen überprüfen können. So schreiben Sie diese Art von Protokoll.

schreibe: - loge und Enter.

wird auf der Konsole gedruckt

E/MainActivity: printVariable:
Kailas Bhakade
quelle
2

Social.class.getSimpleName ()

getSimpleName (): Gibt den einfachen Namen der zugrunde liegenden Klasse zurück, wie im Quellcode angegeben. Gibt eine leere Zeichenfolge zurück, wenn die zugrunde liegende Klasse anonym ist. Der einfache Name eines Arrays ist der einfache Name des Komponententyps, an den "[]" angehängt ist. Insbesondere lautet der einfache Name eines Arrays, dessen Komponententyp anonym ist, "[]".

LSD25
quelle
1

Hier ist die Groovy-Methode für den Zugriff auf Objekteigenschaften:

this.class.simpleName    # returns the simple name of the current class
eaglet3d
quelle
-2

Holen Sie sich einen einfachen Namen anstelle eines Pfades.

String onlyClassName =  this.getLocalClassName(); 

Rufen Sie die obige Methode in onCreate auf

AndroidGeek
quelle
Unvollständige Lösung.
PLG
Wenn Sie die Quelle für die Methode nicht angeben, kann OP sie nicht verwenden.
eckes