在私有方法中从另一个类访问对象

时间:2018-04-19 05:39:04

标签: java class oop object private-methods

如何在Java中的私有方法中从另一个类访问对象?

从另一个类调用私有方法的简单示例。

档案:A.java

public class A {  
  private void message(){System.out.println("hello java"); }  
} 

文件:MethodCall.java

import java.lang.reflect.Method;  
public class MethodCall{  
public static void main(String[] args)throws Exception{  

    Class c = Class.forName("A");  
    Object o= c.newInstance();  
    Method m =c.getDeclaredMethod("message", null);  
    m.setAccessible(true);  
    m.invoke(o, null);  
}  
}  

2 个答案:

答案 0 :(得分:2)

由于 private 仅在声明的类中使用,因此无法从其他类调用。如果您想使用它,则应在修改为受保护公开后使用它。

答案 1 :(得分:0)

通常私有方法只能从同一个类中访问。无法从外部类访问私有方法。但是,有一种方法可以从外部类访问私有方法。

import java.lang.reflect.Method;

public class PriavteMethodAccessTest{  

public static void main(String[] args)throws Exception{  

    A test = new A();
    Class<?> clazz = test.getClass();
    Method method = clazz.getDeclaredMethod("message");
    method.setAccessible(true);
    System.out.println(method.invoke(test));
}  
}