패키지없이 클래스의 이름을 얻는 방법?


199

C #에서 우리는이 Type.FullNameType.Name함께 또는 네임 스페이스 (자바 세계에서 패키지)없이 (이 경우 클래스) 형식의 이름을 얻기를위한.

Java는 무엇입니까 Type.Name?

Class.getName()패키지 이름을 수동으로 사용 하고 제거하는 것보다 더 좋은 방법이 있어야합니다 .


1
나는 이것에 대한 빠른 검색을했고 Google에서 찾은 첫 번째 결과에 감동하지 않았으므로 이것을 공짜로 생각하십시오.
Ola Herrdahl

5
구글 잊어 버려! 모습에 처음 자바 표준 클래스 라이브러리에 대한 답변은 (JavaDoc을 일명) 자바 API 문서입니다 : java.sun.com/javase/reference/api.jsp
스티븐 C

답변:


358

Class.getSimpleName()

소스 코드에 제공된 기본 클래스의 단순 이름을 리턴합니다. 기본 클래스가 익명 인 경우 빈 문자열을 반환합니다.

배열의 단순 이름은 "[]"가 추가 된 구성 요소 유형의 단순 이름입니다. 특히 구성 요소 유형이 익명 인 배열의 단순 이름은 "[]"입니다.

실제로 이름에서 패키지 정보를 제거하지만 숨겨져 있습니다.


또한 익명 클래스의 내부 이름을 빈 문자열에 매핑하고 배열 클래스 이름으로 작업합니다.
Stephen C

4
빈 문자열을 반환 할 수 있다는 것을 몰랐으며 IMHO는 디자인 결함입니다. 간단한 이름이 없으면 예외가 발생합니다.
finnw

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.