Java - geçerli sınıf adını alayım mı?

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();
Çözüm

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.

Yorumlar (1)

Bunu kullanmayı deneyin this.getClass().getCanonicalName() veya this.getClass().getSimpleName(). Eğer anonim bir sınıf ise, this.getClass().getSuperclass().getName() kullanın.

Yorumlar (7)

Örneğinizde this muhtemelen anonim bir sınıf örneğini ifade etmektedir. Java, çevreleyen sınıfın adına bir $number ekleyerek bu sınıflara bir isim verir.

Yorumlar (1)