黑马程序员技术交流社区

标题: 求助 [打印本页]

作者: 清心玉质    时间: 2013-8-5 16:35
标题: 求助
本帖最后由 清心玉质 于 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);
}

}
}
}


作者: 草貌路飞    时间: 2013-8-5 17:59
Object导入错误了 别导入
作者: 清心玉质    时间: 2013-8-5 19:26
草貌路飞 发表于 2013-8-5 17:59
Object导入错误了 别导入

不导入的话要怎么将对象传到方法里?视频里也是这么传的。
作者: 白堇翎    时间: 2013-8-5 20:48
import org.omg.CORBA.Object;

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

作者: 清心玉质    时间: 2013-8-5 20:57
白堇翎 发表于 2013-8-5 20:48
import org.omg.CORBA.Object;

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

果然是,那个东西也不知道怎么进来的。
谢谢!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2