Java에서 현재 메소드의 이름을 검색하는 방법
현재 실행 중인 메소드의 이름을 검색하는 것은 디버깅이나 로깅에 유용할 수 있습니다. 지원. Java는 이에 대한 직접적인 방법을 제공하지 않지만 사용할 수 있는 영리한 트릭이 있습니다.
익명 내부 클래스 및 리플렉션
이 트릭에는 익명 내부 클래스를 사용하고 리플렉션을 사용하여 해당 클래스의 둘러싸는 메서드에 액세스합니다. 다음 코드는 이 기술을 보여줍니다.
String name = new Object() {}.getClass().getEnclosingMethod().getName();
이 코드는 익명의 내부 클래스를 생성하고 getEnclosingMethod()를 사용하여 해당 클래스를 둘러싸는 메서드를 검색합니다. 그런 다음 getName()을 사용하여 둘러싸는 메서드의 이름을 얻습니다.
성능 고려 사항
이 기술이 작동하는 동안 특정 성능 영향이 있습니다. 호출할 때마다 익명의 내부 클래스와 사용되지 않는 객체 인스턴스가 생성됩니다. 이로 인해 특히 이 트릭이 자주 사용되는 시나리오에서 상당한 오버헤드가 발생할 수 있습니다.
향상된 디버그 정보
성능 고려 사항에도 불구하고 이 기술은 이점을 제공합니다. getEnclosingMethod() 메소드는 주석 및 매개변수 이름과 같은 메소드에 대한 추가 정보에 대한 액세스를 제공하는 java.lang.reflect.Method 객체를 반환합니다. 이를 통해 동일한 이름을 가진 메서드와 오버로드 시나리오를 구별할 수 있습니다.
보안 고려 사항
getEnclosingMethod()의 JavaDoc에 따르면 이 기술은 다음과 같아야 한다는 점에 주목할 가치가 있습니다. 내부 클래스는 동일한 클래스 로더를 사용하여 로드되므로 SecurityException을 발생시키지 않습니다. 따라서 보안 관리자가 있어도 접근 조건을 확인할 필요가 없습니다.
생성자 사용
getEnclosingMethod()는 다음을 수행하기 위한 것임을 기억하는 것이 중요합니다. 생성자가 아닌 메소드에 대한 정보를 검색합니다. 생성자의 경우 getEnclosingConstructor()를 사용해야 합니다. 또한 getEnclosingMethod()는 명명된 메서드 외부의 코드 블록에 대해 null을 반환합니다.
위 내용은 Java에서 현재 실행 중인 메서드의 이름을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!