黑马程序员技术交流社区
标题:
代码问题
[打印本页]
作者:
ccyznhy
时间:
2013-8-26 17:08
标题:
代码问题
class SetProperty{
public void setProperty(Object obj, String propertyName, Object value){
try {
Field f = obj.getClass().getDeclaredField(propertyName);
f.setAccessible(true);
f.set(obj,value);
} catch (Exception e) {
System.out.println("修改失败");
}
}
}
class Test{//测试
private String s = "true";
public static void main(String[] args) {
Test t = new Test();
SetProperty s = new SetProperty();
s.setProperty(t, "s","false");
System.out.println(t.s);
}
}
此代码能实现改正么,value可是object的,怎么能改成string呢?
作者:
薛淑凯
时间:
2013-8-26 18:06
向上转型成object,只要还是个字符串就可以。如果传出的是其他类型的就会报错了
作者:
张慧
时间:
2013-8-26 18:17
这个应该是String的,你可以打印stem.out.println(t.s.getClass());
结果是:class java.lang.String
作者:
杨增坤
时间:
2013-8-26 20:50
我想在赋值之前判断一下:
import java.lang.reflect.Field;
public class SetProperty {
public void setProperty(Object obj, String propertyName, Object value) {
try {
Field f = obj.getClass().getDeclaredField(propertyName);
if (f.getClass().getName().equals(value.getClass().getName())) {
f.setAccessible(true);
f.set(obj, value);
} else {
System.out.println(f.getName() + "字段的类类型是:"
+ f.getType().getName());
System.out.println("您为字段的赋值的类型是:" + value.getClass().getName()
+ "\n类型不一致,修改失败");
}
} catch (Exception e) {
System.out.println("修改失败");
}
}
}
但是为什么结果却和自己想的不一样呢,类型相同,但是执行的确实不相同的代码??
作者:
以防万一
时间:
2013-8-30 00:38
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决
详情参考:
如何更改分类
保持队形,谢谢合作
{:soso_e181:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2