//反射获取对象
// TestBean testBean = new TestBean();
try {
//只有一个构造函数 并且是空参
// TestBean testBean = TestBean.class.newInstance();
// Log.d("TAG-->", testBean.getName());
//getDeclaredConstructor 获取所有的构造方法 getConstructor 这个是获取公共构造方法
//多个构造函数 空参
Constructor<TestBean> declaredConstructor1 = TestBean.class.getDeclaredConstructor();
//设置成公共方法
declaredConstructor1.setAccessible(true);
//获取对象
TestBean testBean1 = declaredConstructor1.newInstance();
//多个构造函数 有一个参
Constructor<TestBean> declaredConstructor2 = TestBean.class.getDeclaredConstructor(String.class);
//设置成公共方法
declaredConstructor2.setAccessible(true);
//获取对象
TestBean testBean2 = declaredConstructor2.newInstance("我是苗子");
//带多个参数
Constructor<TestBean> declaredConstructor3 = TestBean.class.getDeclaredConstructor(String.class,int.class);
//设置成公共方法
declaredConstructor3.setAccessible(true);
//获取对象
TestBean testBean3 = declaredConstructor3.newInstance("wo shi miaozi",234);
//获取方法
//空参
Method setName = TestBean.class.getDeclaredMethod("setName");
//设置成公共方法
setName.setAccessible(true);
//执行
setName.invoke(testBean2);
//有参
Method setName2 = TestBean.class.getDeclaredMethod("setName",String.class);
//设置成公共方法
setName2.setAccessible(true);
//执行
setName2.invoke(testBean2,"cao ni ma miao zi");
//属性获取
Field field = TestBean.class.getDeclaredField("name");
field.setAccessible(true);
String name = (String) field.get(testBean2);
Log.d("TAG","name = "+name);
} catch (Exception e) {
e.printStackTrace();
}
网友评论