本帖最后由 怀英 于 2015-7-17 22:20 编辑
我没有写main方法里面的实现,感觉题目没有说要写,只要写个方法就行了。暴力反射我用了,因为不确定它到底是不是public的。
- import java.lang.reflect.Field;
- /*
- * 4、
- * 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
- *
- * public void setProperty(Object obj, String propertyName, Object value){...}
- *
- * hy_think:
- * 仅仅只要写一个方法就行,,,
- * ,,,>设置属性值,,》但我不知道这个属性是什么,,》
- *
- * ,,》只知道他有个属性交property,,,》并且要传入的值是value
- *
- * ,,》用反射做
- *
- * 1.取得object类的class文件
- * 2.取得属性
- * 3.设置属性的访问权限为true
- * 4.将值赋给属性
- *
- */
- public class Demo4 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
-
- public void setProperty(Object obj, String propertyName, Object value){
- try {
- Class clazz = obj.getClass();
- Field fdPN = clazz.getDeclaredField("propertyName");
- fdPN.setAccessible(true);
- fdPN.set(obj, value);
-
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SecurityException 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();
- }
- }
- }
复制代码 |