1. ホーム

[解決済み】Java - 現在のクラス名を取得しますか?

2022-03-27 22:17:49

質問

私がしようとしていることは、現在のクラス名を取得することですが、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());
}

それを静的なユーティリティ・メソッドで動かすことができるのです。

しかし、これは現在のクラス名ではないことに注意してください。匿名クラスは、それを包むクラスとは別のクラスです。このケースは内部クラスについても同様です。