자바에서 패키지 이름을 포함한 현재 클래스 이름을 가져오려면 어떻게 해야 합니까?
저는 프로젝트를 진행하고 있는데, 한 가지 요건은 주요 방법에 대한 두 번째 인수가 "로 시작되는지 여부입니다./
(Linux의 경우) 절대 경로로 간주해야 하지만 (문제가 되지 않습니다)로 시작하지 않으면/
"는 클래스의 현재 작업 경로를 가져오고 지정된 인수를 추가합니다.
클래스 이름은 여러 가지 방법으로 얻을 수 있습니다.System.getProperty("java.class.path")
,new File(".")
그리고.getCanonicalPath()
, 기타 등등...
문제는 패키지가 저장되어 있는 디렉토리만 제공된다는 것입니다.즉, 클래스가 "에 저장되어 있는 경우입니다..../project/this/is/package/name
"그건 내게만 줄 거야"/project/
패키지명을 무시합니다..class files
삶.
좋은 의견이라도 있나?
편집: 연습 설명에서 인용한 설명입니다.
sourcedir는 절대("/"로 시작) 또는 프로그램 실행처에 대한 상대적인 값 중 하나입니다.
sourceir는 메인 메서드의 지정된 인수입니다.어떻게 하면 그 길을 찾을 수 있을까?
사용하다this.getClass().getCanonicalName()
전체 클래스 이름을 얻습니다.
패키지/클래스명("a.b")에 주의해 주세요.C")는 .class 파일(a/b/C.class)의 경로와 다르며 패키지 이름/클래스 이름을 사용하여 경로를 도출하는 것은 일반적으로 잘못된 관행입니다.클래스 파일/패키지 세트는 디렉토리 또는 jar 파일인 여러 클래스 경로에 있을 수 있습니다.
이 작업을 수행할 수 있는 클래스가 있습니다.
Class c = Class.forName("MyClass"); // if you want to specify a class
Class c = this.getClass(); // if you want to use the current class
System.out.println("Package: "+c.getPackage()+"\nClass: "+c.getSimpleName()+"\nFull Identifier: "+c.getName());
한다면c
학급을 대표했다MyClass
포장되어mypackage
위의 코드는 다음과 같습니다.
패키지: mypackage
클래스: MyClass
완전 식별자: mypackage.마이클래스
이 정보를 입수하여 필요에 따라 수정하거나 API에서 자세한 내용을 확인할 수 있습니다.
완전 수식명은 다음과 같이 표시됩니다.
String fqn = YourClass.class.getName();
하지만 클래스 경로 리소스를 읽어야 합니다.사용방법
InputStream in = YourClass.getResourceAsStream("resource.txt");
사용하다this.getClass().getName()
갖기 위해packageName.className
및 사용this.getClass().getSimpleName()
계급명만 따다
언급URL : https://stackoverflow.com/questions/9729197/how-to-get-current-class-name-including-package-name-in-java
'source' 카테고리의 다른 글
URL에 대한 최적의 데이터베이스 필드 유형 (0) | 2022.10.25 |
---|---|
Java는 불량 데이터에 대한 예외를 발생시키지 않는 int.tryparse를 가지고 있습니까? (0) | 2022.10.25 |
MariaDB 30일 이내에 만료되는 계정의 모든 레코드를 선택합니다. (0) | 2022.10.25 |
목록 뷰 getList하위 게시 항목에서 ItemXmlAttributes 메서드가 실패함 (0) | 2022.10.25 |
마리아 DB가 시작을 거부 (0) | 2022.10.25 |