2015-07-19 66 views
-1
public class A 
{ 
    public static void main(String args[]) 
     { 
     } 
} 

class B 
{ 
    private static void call 
     { 
      int x=9; 
      String name ="hello"; 
     } 
} 

谁能告诉我如何访问B类的私有方法场A类,并打印出来在A级 感谢ü..访问私有方法字段

+2

将其公开。 – Jite

+0

没有像“方法领域”这样的概念。你既可以是一个方法的局部变量,也可以是一个实例或类的字段。 – Seelenvirtuose

回答

0

我们不应该尝试直接访问另一个类中的类的private成员。这将完全违反访问修饰符的规则。而且,如果您真的想访问,则可以使用提供的Reflection API。

一般情况下,为了获得private类变量,你可以以访问则该类之外创建publicgetter和setter方法

0

按设计你不能。修改该类,以便您要调用的方法对A可见。

也就是说,您可以使用反射来访问B中的方法,字段等,但不能轻易使用“B.call()”这很可能是你想要做的。

2

可以访问其他类中的私有字段和方法,但整个问题是你不应该这样做。他们是私人

所以正确的做法是通过将它们公开给其他类。在字段(而不是方法)的情况下,您可以使用访问器方法来执行此操作。

但是,如果您确实需要访问私有字段或方法,您可以通过java.lang.reflect来完成。

// Calling the static `call` method of `B` even though it's private: 
Method m = B.class.getMethod("call"); 
m.setAccessible(true); 
m.invoke(null); 

但是,如果没有真正的理由,你不应该这样做。改正设计。