java 获取私有方法_如何获取java类里的私有方法
展開全部
利用java的反射機制,以下代碼:public?class?Main?{
private?void?fun(){
32313133353236313431303231363533e4b893e5b19e31333363386232System.out.println("this?is?my?private?method!");
}
private?void?fun2(String?what)?{
System.out.println(what);
}
private?static?void?fun3(){
System.out.println("this?is?my?private?static?method!");
}
}import?java.lang.reflect.InvocationTargetException;
import?java.lang.reflect.Method;
public?class?Test?{
public?static?void?main(String[]?args)?{
try?{
Class>?_class?=?Class.forName("Main");//名字填完整的包名.類名??,示例沒有包因此只填類名
Object?object?=?_class.newInstance();
Method?method?=?_class.getDeclaredMethod("fun");//fun無參數,因此只要方法名
method.setAccessible(true);//私有方法設置可訪問
method.invoke(object,?new?Object[0]);
Method?method2?=?_class.getDeclaredMethod("fun2",String.class);//有參數,需要參數的類別
method2.setAccessible(true);
method2.invoke(object,?new?String("test"));//傳參數的值
Method?method3?=?_class.getDeclaredMethod("fun3");
method3.setAccessible(true);
method3.invoke(object,new?Object[0]);//靜態方法,object傳null
}?catch?(ClassNotFoundException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
catch?(InstantiationException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IllegalAccessException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(SecurityException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(NoSuchMethodException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IllegalArgumentException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(InvocationTargetException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java 获取私有方法_如何获取java类里的私有方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 级联下拉列表_java 下拉框
- 下一篇: java usc2短信编码_手机短信PD