java里如何从一个类访问另一个类的private方法 求解,就是成员变量我都知道怎么办,方法不懂
如果是内部类,可以访问,外部类,就不行了,你还是老老实实遵守面向对象的规则吧
既然是私有的当然无法访问 把它改成public就可以啊
利用反射的原理就对私有的属性进行访问。如果不利用反射是访问不到的
java没有友元,非要这样就反射吧
通常来说,既然是私有方法就不应该暴漏给其他类调用。但是你说的问题确实可以通过类反射进行实现。举一个例子如下
package com.zhb.chapter14.rtti;
/**
@author zhaohb
*/
public class InvokedClass {
public void sayHelloWorld(){
System.out.println("invoke class say Hello Wolrd");
}
private void saySomething(String name){
System.out.println("Hello: " + name);
}
}
package com.zhb.chapter14.rtti;
import java.lang.reflect.Method;
/**
private是类私有的,不可以给其他类访问,或者你可以改成public或者就反射吧
可以用反射,但是尽量不要破坏规则,别人用private,是有别人自己的用意的。
反射是可以,但是请遵守规则
采用反射获取方法,获取private方法需要使用getDeclaredMethod方法,通过方法名 和 参数列表 来定位方法,得到Method对象,
再采用 invoke方法,传入参数 执行对象 和 方法参数, 即可,
eg:
public class GetMethod {
private void priMethod(){
System.out.println("this is a private method.");
}
public void pubMethod(int a, int b) {
System.out.println("this is a public method. And result of a+b is:" + (a + b));
}
public static void main(String[] args) throws Exception {
Class c = GetMethod.class;
c.getDeclaredMethod("pubMethod", int.class, int.class).invoke(c.newInstance(),1,1);
}
}
采用反射获取方法,获取private方法需要使用getDeclaredMethod方法,通过方法名 和 参数列表 来定位方法,得到Method对象,
再采用 invoke方法,传入参数 执行对象 和 方法参数, 即可,
eg:
public class GetMethod {
private void priMethod(){
System.out.println("this is a private method.");
}
public void pubMethod(int a, int b) {
System.out.println("this is a public method. And result of a+b is:" + (a + b));
}
public static void main(String[] args) throws Exception {
Class c = GetMethod.class;
c.getDeclaredMethod("pubMethod", int.class, int.class).invoke(c.newInstance(),1,1);
}
}
再加个问题 反射一般用在什么地方?
尽然用了private,说明就是不想被别人访问,你干嘛还要破坏呢
private是类私有的,不可以给其他类访问,或者你可以改成public或者就反射吧