리플렉션을 탐색하는 개발자는 프라이빗 메서드에 액세스해야 하는 시나리오에 자주 직면합니다. Java는 기존 리플렉션 메커니즘을 통해 이러한 메서드에 대한 직접 액세스를 제한하지만 리플렉션 기반 메서드를 통해 해결 방법을 제공합니다.
해결책:
리플렉션을 사용하여 개인 메서드를 호출하려면 , 제공된 코드 조각을 다음과 같이 수정하세요.
Element node = outerNode.item(0); String methodName = node.getAttribute("method"); String objectName = node.getAttribute("object"); if ("SomeObject".equals(objectName)) object = someObject; else object = this; // Use getDeclaredMethod to include both private and inherited methods Method method = object.getClass().getDeclaredMethod(methodName); // Enable access to the private method using setAccessible method.setAccessible(true); // Invoke the method and store the result Object r = method.invoke(object);
주의 사항:
대체 접근 방식:
메서드의 접근성을 수정하거나 PrivilegedAction을 구현하는 경우(에서 제안한 대로) 제공된 답변)이 실현 가능하지 않은 경우 다음 대안을 고려하십시오.
위 내용은 Java 리플렉션을 사용하여 개인 메서드를 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!