使用Java的反射功能调用类中的方法
2014-11-05 10:57
417 查看
最近一直在搞Java的反射,今天使用反射调用方法时出现了很多问题,主要是没有详细参考官方API。所以走了很多弯路。
所以想把这个例子记下来,供自己也供他人学习。
所以想把这个例子记下来,供自己也供他人学习。
package com.mine.practice.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 使用反射调用类中的方法 * @author 2014-11-5 上午10:51:28 * @version V1.0 * @modify by user: {修改人} 2014-11-5 * @modify by reason:{方法名}:{原因} */ public class User{ /**用户名*/ String name; @SuppressWarnings("unused") public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{ //1、实例化对象 User user = new User(); //2、方法中需要的参数列表。单个参数时也可以直接使用String params = "Tom"; String[] params = new String[]{"Tom"}; //3.1需要参数的方法 //第一个参数为方法的名字,第二个参数为方法参数的类型,单个参数时也可以直接写XXX.class或者写成数组的形式也可以。 Method setMethod = (User.class).getMethod("setName",new Class[]{String.class}); //调用setName方法,因为没有返回值,所以可以不用使用对象接收,如果接收了返回的也是null setMethod.invoke(user,params); //3.2不需要参数的方法 //第一个参数为方法的名字,因为没有参数,所以只需要一个参数即可。 Method getMethod = (User.class).getMethod("getName"); //调用getName方法,因为有返回值,所以可以定义一个Object接收返回值。 //注意invoke中的类即下面的user必须实例化,否则会抛出下面的异常的 //java.lang.IllegalArgumentException: object is not an instance of declaring class Object object = getMethod.invoke(user); //打印使用反射方式获取方法的返回值 System.out.println(object); } public void setName(String name) { this.name = name; } public String getName(){ return name; } }
相关文章推荐
- java如何使用反射调用类中的方法
- 在使用JAVA反射功能,调用class.getField()方法报错noSuchFieldException,几点解决方法
- Java_通过反射调用类中的方法
- 如何使用Java的反射机制以及调用构造方法?
- Java使用反射调用方法
- java反射Method中的如何调用任意方法,即invoke()的使用
- Java中使用反射调用静态方法
- java反射学习笔记(3)----使用反射来调用方法
- java反射调用配置文件构造类对象,使用其方法
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- java反射调用配置文件构造类对象,使用其方法
- java使用反射机制调用方法
- 使用java反射中的getMethod,invoke方法调用对象方法的实例
- 【Java使用反射调用方法】
- java使用反射调用set和get方法
- Java使用反射调用方法
- C#反射调用另外一个类中的私有字段和方法
- 使用反射调用get方法
- JAVA反射示例四——结合代理模式的远程方法调用事例
- 通过Java反射调用方法