java 反射机制的使用

来源:互联网 发布:evernote mac 编辑:程序博客网 时间:2024/06/06 01:38
package com.example.javareflect;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import android.app.Activity;import android.os.Bundle;/** * java 反射机制的使用 * http://blog.csdn.net/lfdfhl/article/details/13509839 * @author andy * */public class MainActivity extends Activity {private Field mStudendField;private Object mStudentObject;private Class mStudentClass;private Method mStudentShowMethod;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init()  {try {String workerclassname = "com.example.javareflect.Worker";Class workerClass = Class.forName(workerclassname);//得到Worker类中的mStudent字段mStudendField = workerClass.getDeclaredField("mStudent");mStudendField.setAccessible(true);//实例化mStudent对象mStudentObject = mStudendField.get(new Worker());//得到mStudent对应类的classmStudentClass = Class.forName(mStudentObject.getClass().getName());//反射出该class类中的show()方法mStudentShowMethod = mStudentClass.getDeclaredMethod("show");//取消访问私有方法的合法性检查mStudentShowMethod.setAccessible(true);//调用show()方法mStudentShowMethod.invoke(mStudentObject);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

0 0
原创粉丝点击