A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清心玉质 中级黑马   /  2013-8-5 16:35  /  1029 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 清心玉质 于 2013-8-5 20:58 编辑

  1. <DIV class=blockcode>
  2. <BLOCKQUOTE>package frogbean;

  3. public class ReflectionPoint {
  4. private int x;
  5. public int y;
  6. public String str1 = "ball";
  7. public String str2= "basketball";
  8. public String str3 = "itcast";
  9. public ReflectionPoint(int x, int y) {
  10. super();
  11. this.x = x;
  12. this.y = y;
  13. }
  14. public String toString(){
  15. return str1 +":"+str2+":"+str3;

  16. }
  17. }
复制代码



package frogbean;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

import org.omg.CORBA.Object;

public class ReflectionTest {
public static void main(String args[])throws Exception
{


ReflectionPoint pt1 = new ReflectionPoint(3,5);
Field fieldY = pt1.getClass().getField("y");
//fieldY的值是多少?5?错
//fieldY不是对象身上的变量,而是类上的,要用它去取某个对象上的值代表类字节码的变量,没对应到对象的身上的值

System.out.println(fieldY.get(pt1));
Field fieldX = pt1.getClass().getDeclaredField("x");//getField("x")不能拿到私有成员
fieldX.setAccessible(true);//暴力反射,强制获取私有变量值
System.out.println(fieldX.get(pt1));

changeStringValue(pt1);//错误出现在这行
System.out.println(pt1);

}


private static void changeStringValue(Object obj)throws Exception{
// TODO Auto-generated method stub
Field[] fields = obj.getClass().getFields();
for(Field field : fields){
if(field.getType() == String.class){
String oldValue = (String)field.get(obj);
String newValue = oldValue.replace('b','a');
field.set(obj, newValue);
}

}
}
}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

4 个回复

倒序浏览
Object导入错误了 别导入
回复 使用道具 举报
草貌路飞 发表于 2013-8-5 17:59
Object导入错误了 别导入

不导入的话要怎么将对象传到方法里?视频里也是这么传的。
回复 使用道具 举报
import org.omg.CORBA.Object;

你导了个这个东西进来 这是什么东西...把这个东西删掉就OK了
回复 使用道具 举报
白堇翎 发表于 2013-8-5 20:48
import org.omg.CORBA.Object;

你导了个这个东西进来 这是什么东西...把这个东西删掉就OK了

果然是,那个东西也不知道怎么进来的。
谢谢!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马