您的位置:首页 > 编程语言 > Java开发

Java反射基本使用方法 示例

2013-06-01 21:36 771 查看
package com.reflection;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
* @author 鲁志明  E-mail: 13688601037@139.com
* @version 创建时间:2013-6-1 下午9:06:22
*
*/
public class Demo {

public static void main(String[] args) throws Exception, SecurityException {
/**
* 构造对象的步骤
*/
//1.获得Class对象
Class<Person> personClass = Person.class;
//2.获得Constructor对象
Constructor<Person> personConstructor = personClass.getDeclaredConstructor(null);
//3.设置该private的构造方法 	可访问为true
personConstructor.setAccessible(true);
//4.利用Constructor构造出该对象
Person person = personConstructor.newInstance(null);
person.setAge(3);
System.out.println("age="+person.getAge());
/**
* 调用属性的步骤
*/
//		1.获得age Field 属性对象
Field personAgeField = personClass.getDeclaredField("age");
//		2.设置属性的 可访问为true
personAgeField.setAccessible(true);
//		3.给该属性设置值 , 设置的时候需要确定是给哪个对象设置,所以第一个参数是我们构造出来的person对象
personAgeField.setInt(person, 4);

System.out.println("age="+person.getAge());

/**
* 调用无参数 无返回值 方法
*/
Method personMethod1 = personClass.getDeclaredMethod("method1", null);
personMethod1.setAccessible(true);
personMethod1.invoke(person, null);
/**
* 调用有多个参数 有返回值的方法
*/
//		1.获得Method对象,第一个参数是方法的名字,第二个参数是方法参数的Class数组对象
Method personMethod2 = personClass.getDeclaredMethod("method2",new Class[]{String.class,String.class});
//		2.设置可访问 为 true
personMethod2.setAccessible(true);
//		3.使用invoke()方法来执行某个对象的该方法
//		invoke的第一个参数是要执行该方法的对象,第二个参数是 执行该方法的需要参数数组
String result = (String)personMethod2.invoke(person, new Object[]{"参数1","参数2"});
System.out.println(result);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: