Yapmaya çalıştığım tek şey mevcut sınıf adını almak ve java sınıf adımın sonuna işe yaramaz, anlamsız bir $1 ekliyor. Bundan nasıl kurtulabilirim ve yalnızca gerçek sınıf adını nasıl döndürebilirim?
String className = this.getClass().getName();
Bu "1" "işe yaramaz bir saçmalık" değildir. Sınıfınız anonim ise, bir sayı eklenir.
Eğer sınıfın kendisini değil, bildiren sınıfı istiyorsanız, o zaman getEnclosingClass()
kullanabilirsiniz. Örneğin:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
Bunu bazı statik yardımcı program yöntemlerine taşıyabilirsiniz.
Ancak bunun geçerli sınıf adı olmadığını unutmayın. Anonim sınıf, kendisini çevreleyen sınıftan farklı bir sınıftır. İç sınıflar için de durum benzerdir.
Bunu kullanmayı deneyin
this.getClass().getCanonicalName()
veya this.getClass().getSimpleName()
. Eğer anonim bir sınıf ise, this.getClass().getSuperclass().getName()
kullanın.