Το μόνο που προσπαθώ να κάνω είναι να πάρω το τρέχον όνομα της κλάσης, και η java προσθέτει ένα άχρηστο μη-ανοησία $1 στο τέλος του ονόματος της κλάσης μου. Πώς μπορώ να το ξεφορτωθώ και να επιστρέψω μόνο το πραγματικό όνομα της κλάσης;
String className = this.getClass().getName();
Το "$1" δεν είναι "άχρηστη ανοησία". Εάν η κλάση σας είναι ανώνυμη, προστίθεται ένας αριθμός.
Αν δεν θέλετε την ίδια την κλάση, αλλά την κλάση που τη δηλώνει, τότε μπορείτε να χρησιμοποιήσετε την getEnclosingClass()
. Για παράδειγμα:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
Μπορείτε να το μεταφέρετε αυτό σε κάποια στατική βοηθητική μέθοδο.
Σημειώστε όμως ότι αυτό δεν είναι το τρέχον όνομα της κλάσης. Η ανώνυμη κλάση είναι διαφορετική κλάση από την κλάση που την περικλείει. Η περίπτωση είναι παρόμοια για τις εσωτερικές κλάσεις.
Δοκιμάστε να χρησιμοποιήσετε αυτό
this.getClass().getCanonicalName()
ή this.getClass().getSimpleName()
. Εάν πρόκειται για ανώνυμη κλάση, χρησιμοποιήστε this.getClass().getSuperclass().getName()
.