source

자바에서 패키지 이름을 포함한 현재 클래스 이름을 가져오려면 어떻게 해야 합니까?

nicesource 2022. 10. 25. 17:40
반응형

자바에서 패키지 이름을 포함한 현재 클래스 이름을 가져오려면 어떻게 해야 합니까?

저는 프로젝트를 진행하고 있는데, 한 가지 요건은 주요 방법에 대한 두 번째 인수가 "로 시작되는지 여부입니다./(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

반응형