이 글에서는 Java에서 현재 클래스 이름과 메소드 이름을 가져오는 구현 방법에 대한 관련 정보를 주로 소개합니다. 구현 방법을 제공하고 여러 메소드의 효율성을 비교할 뿐만 아니라 필요한 친구들이 참고할 수 있습니다.
Get Java의 현재 클래스 이름 및 메소드 이름 了 여기서는 4가지 메소드 및 비교를 제공합니다. 필요한 경우 각 기능을 테스트하기 위해 각 항목 이름 및 기능을 수동으로 인쇄하면 참조할 수 있습니다. 이름을 지정하면 많은 기능이 너무 피곤할 수 있습니다. Java는 이미 자체적으로 기록할 수 있는 많은 기능을 준비했습니다.
클래스 이름 가져오기:public static void testGetClassName() { // 方法1:通过SecurityManager的保护方法getClassContext() String clazzName = new SecurityManager() { public String getClassName() { return getClassContext()[1].getName(); } }.getClassName(); System.out.println(clazzName); // 方法2:通过Throwable的方法getStackTrace() String clazzName2 = new Throwable().getStackTrace()[1].getClassName(); System.out.println(clazzName2); // 方法3:通过分析匿名类名称() String clazzName3 = new Object() { public String getClassName() { String clazzName = this.getClass().getName(); return clazzName.substring(0, clazzName.lastIndexOf('$')); } }.getClassName(); System.out.println(clazzName3); //方法4:通过Thread的方法getStackTrace() String clazzName4 = Thread.currentThread().getStackTrace()[2].getClassName(); System.out.println(clazzName4); }100만 번 실행됨,
두 번째 방법: 4843ms
세 번째 방법: 47ms
비교:
1) 방법 1에 사용 제한이 있나요?
3) 방법 3은 익명 클래스의 이름을 간략하게 분석한 것임이 분명하며 실제로는 가장 높은 성능을 발휘합니다. 4) 방법 4는 방법 3과 약간 비슷하고 좀 더 형식적입니다. 방법 3보다
public static void testGetFunctionName() { // 方法1:通过Throwable的方法getStackTrace() String funcName2 = new Throwable().getStackTrace()[1].getMethodName(); System.out.println(funcName2); //方法2:通过Thread的方法getStackTrace() String clazzName4 = Thread.currentThread().getStackTrace()[2].getMethodName(); System.out.println(clazzName4); }100만 번 실행:
두 번째 유형: 6337ms
설명:
1. 예외 클래스 Throwable에서 상속되므로 어떤 곳에서는 Exception을 사용하여 getStackTrace를 호출하지만 실제로는 Throwable
위 내용은 Java에서 현재 클래스 이름과 메소드 이름 인스턴스를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!