JavaSE 反射 Part2,javase反射part2
分享于 点击 39926 次 点评:272
JavaSE 反射 Part2,javase反射part2
原作者: 尚硅谷-佟刚
package com.atweihai.reflection;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.Test;
public class ReflectionTest {
@Test
public void testClassField() throws Exception{
String className="com.atweihai.reflection.Student";
//可能为私有,可能在其父类中
String fieldName="age";
Object val=20;
//创建className对应类的对象,并为其fieldName赋值为val
Class clazz=Class.forName(className);
Field field = getField(clazz, fieldName);
Object obj=clazz.newInstance();
setFieldValue(field, obj, val);
Object fieldValue=getFieldValue(obj, field);
System.out.println(fieldValue);
}
//获取指定字段的值
private Object getFieldValue(Object obj,Field field) throws Exception{
field.setAccessible(true);
return field.get(obj);
}
//设置指定字段的值
private void setFieldValue(Field field, Object obj, Object val) throws IllegalAccessException {
field.setAccessible(true);;
field.set(obj, val);
}
//获取指定字段
private Field getField(Class clazz, String fieldName) {
Field field=null;
for(;clazz!=Object.class;clazz=clazz.getSuperclass()){
try {
field=clazz.getDeclaredField(fieldName);
break;
} catch (Exception e) {}
}
return field;
}
}
相关文章
- 暂无相关文章
用户点评