パッケージなしでクラスの名前を取得するにはどうすればよいですか?


199

C#では、私たちは持っているType.FullNameType.Name、名前空間(javaの世界でのパッケージ)の有無にかかわらずタイプ(この場合はクラス)の名前を取得するため。

Javaは何に相当しType.Nameますか?

明らかにClass.getName()、手動で使用してパッケージ名を取り除くよりも優れた方法があるはずです。


1
私はこれについて簡単に検索しましたが、Googleで見つけた最初の結果に感銘を受けなかったので、これを景品と見なしてください。
Ola Herrdahl、2010

5
Googleを忘れて!見た目に最初の場所 Javaの標準クラスライブラリについての回答については、(javadocを別名)のJava APIのドキュメントです:java.sun.com/javase/reference/api.jsp
スティーブンC

回答:


358

Class.getSimpleName()

ソースコードで指定された、基になるクラスの単純な名前を返します。基になるクラスが匿名の場合、空の文字列を返します。

配列の単純名は、コンポーネントタイプの単純名に「[]」を追加したものです。特に、コンポーネントタイプが匿名である配列の単純な名前は "[]"です。

これは実際には名前からパッケージ情報を取り除いていますが、これは非表示になっています。


また、匿名クラスの内部名を空の文字列にマップし、配列クラス名を処理します。
Stephen C

4
空の文字列を返す可能性があることを知りませんでした。これは設計上の欠陥です。単純な名前がない場合は、例外をスローする必要があります。
finnw 2010

20

次の関数は、JDKバージョン1.5以降で機能します。

public String getSimpleName()

14

StackTraceElementを使用する場合は、以下を使用します。

String fullClassName = stackTraceElement.getClassName();
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);

System.out.println(simpleClassName);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.