2017-05-09 5 views
0

이 포럼에서 내 첫 번째 질문입니다. 저는 제 경우에 대한 행운을 찾지 않았습니다.자이 썬에서 개인 메서드 시작

m = object.class.getDeclaredMethod("methodA") 
m.setAccessible(True) 
m.invoke(object) 

을 :

public class ClassA { 
    private methodA() { 
      a = methodB() 
    return a 
    } 

    private methodB(){ 
      b = methodC() 
    return b 
    } 

    private methodC(){ 
     c = 5 + 1 
    return c 
    } 
} 

방법의 모든

내가 개인 방법 자이 썬에서 사용하여 다음과 같은 코드를 호출 같은 클래스에

있습니다

호출 계층 구조는 다음과 같다 질문은 setAccessible 수정자가 다른 개인 메소드에 전파 될 것인가입니다. 모든 메서드가 성공적으로 예상 값을 반환 할 것입니다?

도와주세요.

답변

1

나는 자이 썬을 확실히 모른다. 그러나 m은 당신의 방법 A와 동일합니다. m (또는 methodA 각각)을 액세스 가능하도록 설정하면 methodB에 액세스 할 수 없게 설정됩니다.

이제 methodA를 호출 할 수 있으므로이 메서드는 자체 클래스에서 다른 private 메서드를 호출해도 아무런 문제가 없습니다.

+0

그래서 methodA가 아무런 오류없이 성공적으로 호출 되었다면이 메서드는 내부적으로 내부의 모든 private 메서드를 호출 할 수 있다는 것을 의미합니까? – NickoF

+0

나는 당신이 방금 접근법을 private에서 public으로 바꾸 었다고 말할 것이다. 메서드 자체는 항상 자체 클래스의 private 메서드를 호출 할 수있는 권한이 있습니다. –

+0

methodA가 처음부터 public이라면 methodA를 호출하고 methodA가 성공적으로 methodB를 호출 할 수 있습니까? 예. 동일한 일이 성찰에 해당됩니다. 진입 점을 접근 가능하게 만들어야 만합니다. 그런 다음 집은 당신을 습격합니다. – IceArdor