2016-10-15 3 views
0

invoke() 메소드를 사용하여 gosu scratchpad에서 개인 메소드를 호출하려고합니다. 그러나 해당 개인 메소드에 액세스 할 수 없습니다. 고수 Language.Here 코드Gosu에서 개인 메소드를 호출하는 방법

try{ 
    var clazz = java.lang.Class.forName(ClaimSearchCriteriaImpl) 
    var method = clazz.getDeclaredMethod("generateSimpleActiveClaimViewQuery", null) 
     method.setAccessible(true) 
    var ss = method.invoke(clazz, null)as ClaimSearchCriteriaImpl 
     print("Result.."+ss) 
} catch(exception){ 
     print("***********"+exception) 
} 

이다에서 나는 다음과 같은 예외를

java.lang.IllegalAccessException: Class program_.__Program__505 can not access a member of class com.guidewire.cc.domain.claim.impl.ClaimSearchCriteriaImpl with modifiers "private" 
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:105) 
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261) 
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253) 
    at java.lang.reflect.Method.invoke(Method.java:599) 
    at program_.__Program__505.evaluate(Unknown Source) 
    at gw.internal.gosu.parser.GosuProgram.runProgram(GosuProgram.java:421) 
    at gw.internal.gosu.parser.GosuProgram.evaluate(GosuProgram.java:253) 
    at gw.internal.gosu.parser.GosuProgram_Proxy.evaluate(gw.internal.gosu.parser.GosuProgram_Proxy:2) 
    at gw.internal.gosu.parser.ExecutionEnvironment$1.evaluate(ExecutionEnvironment.java:543) 
    at gw.internal.gosu.parser.ExecutionEnvironment$1.runScript(ExecutionEnvironment.java:523) 
    at gw.internal.gosu.parser.ExecutionEnvironment$1.run(ExecutionEnvironment.java:489) 
    at java.lang.Thread.run(Thread.java:724) 
+0

다른 클래스 또는 객체가 해당 한정자와 함께 메서드를 사용하지 못하도록하는 'private'키워드의 전체적인 포인트가 아닙니까? 이것은 응용 프로그램이 설계된대로 작동하고있는 것처럼 보입니다. – Waterbagel

+0

당신이 이것을 알아 냈습니까? – dawogfather

답변

-1

을 얻고,이 코드를 실행하려고하면 하나가 나에게 개인 메소드를 호출하는 가장 좋은 방법을 말할 수 ** 이 코드를 시도해보십시오 .. 인스턴스화하지 않았습니다 **

try{ 
var clazz = java.lang.Class.forName(ClaimSearchCriteriaImpl) 
var method = clazz.getDeclaredMethod("generateSimpleActiveClaimViewQuery", null) 
Object obj= clazz.newInstance(); 
    method.setAccessible(true) 
var ss = method.invoke(obj, null)as ClaimSearchCriteriaImpl 
    print("Result.."+ss) 
} catch(exception){ 
     print("***********"+exception) 
} 
관련 문제