访问另一个java类中的私有方法字段

时间:2015-07-19 07:54:34

标签: java

public class A
{
    public static void main(String args[]) 
        {
        } 
} 

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

任何人都可以告诉我如何访问A类中的B类私有方法字段并在A类中打印它们。 谢谢你..

3 个答案:

答案 0 :(得分:2)

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

因此,正确的做法是通过将其公开来使其可用于其他类。对于 fields (而不是方法),您可以使用访问器方法执行此操作。

但是,如果您真的必须访问私人字段或方法,可以通过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);

但是,如果没有充分理由,你不应该这样做。改为修改设计。

答案 1 :(得分:0)

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

通常,为了获得private类变量,您可以创建public setter和getters ,以便在该类之外访问。

答案 2 :(得分:0)

按设计你不能。修改课程,以便A调用您想要调用的方法。

也就是说,您可以使用反射来访问B内的方法,字段等,但是您不能轻易地使用" B.call()"最有可能是你想做的事。