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

java 反射机制的使用

2014-09-20 16:18 295 查看
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;

@Override
protected 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对应类的class
mStudentClass = 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 block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: