2017-05-09 41 views
0

这是我在这个论坛中的第一个问题,我一直在寻找我的情况没有运气。jython中的私人方法开始

调用层次结构如下:

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

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

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

所有的方法都在同一个班

我调用私有方法在Jython中使用下面的代码:

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

的问题是setAccessible修饰符会传播到其他私有方法。并且所有方法都会成功返回预期值?

请帮帮我。

回答

1

我不确定jython。但是看起来m和你的方法A是一样的。 如果您将m(或methodA分别)设置为可访问,则不会设置methodB访问权限。

但是,现在你可以调用methodA了,这个方法没有问题从其自己的类中调用其他私有方法。

+0

所以你说如果methodA被成功调用没有任何错误,这意味着这种方法是内部管理调用所有私有方法,是吗? – NickoF

+0

我会说你刚才改变了acces修饰符从私人到公共这个方法。该方法本身总是有权调用它自己的类的私有方法。 –

+0

如果methodA是公开的,您能否调用methodA并让methodA成功地为您调用methodB?是。反思也是如此。你只需要让你的入口点可以访问,那么房子是你的突袭。 – IceArdor