用方法对象进行反射
2017-07-02 21:44
176 查看
package com.mysec.reflex;
import java.lang.reflect.Method;
public class MethodDemo {
public static void main(String[] args) {
//要获取print(int,int)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
A a = new A();
Class<?> c = a.getClass();
/**
* 获取方法名称和参数列表来决定
* getMethod获取的是public的方法
* getDeclaredMethods获取的是自己声明的方法
*/
// c.getDeclaredMethods();
try {
// Method method = c.getMethod("print", new Class[]{int.class,int.class});
Method method = c.getMethod("print",int.class,int.class);//获取方法对象
//方法的反射操作
// a.print(1, 2);//方法的反射操作是用method对象来进行方法调用和a.print调用的效果相同
//如果没有返回值返回null,有返回值返回具体的返回值
Object o = method.invoke(a, new Object[]{1,2});//用方法进行反射操作
// Method method2 = c.getMethod("print");
Method method2 = c.getMethod("print", new Class[]{});
// method2.invoke(a, new Object[]{});
method2.invoke(a);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A{
public void print(){
System.out.println("ptint");
}
public void print(int a,int b){
System.out.println(a+b);
}
public void print(String a,String b){
System.out.println(a+b);
}
}
import java.lang.reflect.Method;
public class MethodDemo {
public static void main(String[] args) {
//要获取print(int,int)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
A a = new A();
Class<?> c = a.getClass();
/**
* 获取方法名称和参数列表来决定
* getMethod获取的是public的方法
* getDeclaredMethods获取的是自己声明的方法
*/
// c.getDeclaredMethods();
try {
// Method method = c.getMethod("print", new Class[]{int.class,int.class});
Method method = c.getMethod("print",int.class,int.class);//获取方法对象
//方法的反射操作
// a.print(1, 2);//方法的反射操作是用method对象来进行方法调用和a.print调用的效果相同
//如果没有返回值返回null,有返回值返回具体的返回值
Object o = method.invoke(a, new Object[]{1,2});//用方法进行反射操作
// Method method2 = c.getMethod("print");
Method method2 = c.getMethod("print", new Class[]{});
// method2.invoke(a, new Object[]{});
method2.invoke(a);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A{
public void print(){
System.out.println("ptint");
}
public void print(int a,int b){
System.out.println(a+b);
}
public void print(String a,String b){
System.out.println(a+b);
}
}
相关文章推荐
- 对对象类型和调用方法属性进行存储以提升反射性能
- 对对象类型和调用方法属性进行存储以提升反射性能
- 对对象类型和调用方法属性进行存储以提升反射性能
- JAVA中利用反射机制进行对象和Map相互转换的方法
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- ASP调用DLL总对象方法与数据库进行连接
- 在QTP中巧用WebTable对象的ChildItem方法进行测试
- 使用反射-动态创建对象及调用对象方法
- Net反射技术应用解决对象不同版本方法不同参数的问题(转)
- 通过反射的方法,将源对象属性的值赋给目标对象的相同属性
- JS中利用String对象的方法进行电子邮件的验证
- 深度复制一个对象方法。利用反射机制,不使用Serialization,也不使用ICloneable接口
- 通过反射方式来调用某个对象的方法的步骤
- 在Watir中进行对象映射(Object Map)的方法
- 使用SqlBulkCopy对象进行大容量复制数据出现Datardader已经存在的错误的解决方法
- java反射调用配置文件构造类对象,使用其方法
- 使用反射依导航路径调用对象成员方法,或返回对象子、孙属性或字段成员[转]
- 使用SendMessage方法对窗体上的控件进行截图,该方法的思想就是把控件的句柄拿到,对控件发送WM_PAINT消息,并且把希望得到图形对象的句柄当作wParam参数传过去,这样就可以在图形对象得到想要得图形。
- 在QTP中巧用WebTable对象的ChildItem方法进行测试
- C#自动给据sql中的带@的变量提取变量名称在从简单数据对象中取得生成SqlParameter数组进行数据插入(利用反射完成)