reflect 系列测试代码

package com.zjx.reflect.third;

import java.lang.reflect.Method;

/**
 * 用反射机制调用对象的方法
 * @author Xian-JZ
 *
 */
public class InvokeTester {
    public int add(int param1, int param2) {
        return param1 + param2;
    }
 
    public String echo(String msg) {
        return "echo: " + msg;
    }
 
    public static void main(String[] args) throws Exception {
        Class<?> classType = InvokeTester.class;
        Object invokeTester = classType.newInstance();
 
        // Object invokeTester = classType.getConstructor(new
        // Class[]{}).newInstance(new Object[]{});
 
 
        //获取InvokeTester类的add()方法
        Method addMethod = classType.getMethod("add", new Class[]{int.class, int.class});
        //调用invokeTester对象上的add()方法
        Object result = addMethod.invoke(invokeTester, new Object[]{new Integer(100), new Integer(200)});
        System.out.println((Integer) result);
 
 
        //获取InvokeTester类的echo()方法
        Method echoMethod = classType.getMethod("echo", new Class[]{String.class});
        //调用invokeTester对象的echo()方法
        result = echoMethod.invoke(invokeTester, new Object[]{"Hello"});
        System.out.println((String) result);
    }
/**
 * Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,
 * 如果参数为基本类型数据,必须转换为相应的包装类型的对象。
 * invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,
 * 那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回。
 */
}

 

你可能感兴趣的:(用反射机制调用对象的方法)