黑马程序员技术交流社区
标题:
Java高新技术
[打印本页]
作者:
陈文杰
时间:
2013-11-18 23:56
标题:
Java高新技术
关于反射能给个通俗的说法么,定义看的头晕
作者:
陈文杰
时间:
2013-11-19 00:51
能当成膝跳反应么
作者:
RuntimeError!
时间:
2013-11-19 04:29
反射就是用定义好的一种方法来获取一个类内部组成的一种方法,能让我们更明确的使用一种类,或者完成一个正常调用完成不了的一些事。
例如这段代码 就可以修改对象X中的private的值。。
Field fieldX=pt1.getClass.getDeclaredField(x);
fieldX.setAccessible(true);
复制代码
还有把一个对象的类中所有的字符串中的一个字母改成另外的字母,只对这个对象有效
import java.lang.reflect.Field;
/**
* 作业:将任意一个对象中的所有String类型的成员变量所对应的
* 字符串内容中的“b”改成“a”。
* @author yupengfei
*
*/
public class ReflectHomework
{
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException
{
RefPoint pt1 = new RefPoint(9);
RefPoint pt2 = new RefPoint(5);
changeStrValue(pt1);
System.out.println(pt1);
//这里试着看别的成员变量的字符串是否被更改
System.out.println(pt2);
}
private static void changeStrValue(Object obj) throws IllegalArgumentException, IllegalAccessException
{
Field[] fields = obj.getClass().getFields();
for(Field field : fields)
{
//这里用 == 因为是字节码比较,所以用等号比较好
if(field.getType() == String.class)
{
String strValue = (String)field.get(obj);
String newValue = strValue.replace('b', 'a');
field.set(obj, newValue);
}
}
}
}
class RefPoint
{
int x = 3;
public String str1 = "basic";
public String str2 = "babyGo!";
public String str3 = "lalala";
public RefPoint(int x)
{
this.x=x;
}
@Override
//用于分割显示每个字符串
public String toString()
{
return str1 + ":" +str2+":" + str3;
}
}
复制代码
作者:
冯国强
时间:
2013-11-19 20:19
反射:就是把Java类中的各种成分映射成相应的Java元素。
就是现实生活中 ,无论哪一种事物,事物内部还是由事物组成,反射就是将事物内部的成分定义成类。例如,汽车是由许多零件组成等等。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2