java 反射
来源:互联网 发布:五轴编程工资多少钱 编辑:程序博客网 时间:2024/05/02 00:17
把java类中的各种成分映射成相应的java类。
Constructor 构造方法类
以字节码的形式得到类的构造方法,它可以获得所属类,类的修饰符等
Constructor的DEMO:
1,在类字节码上得到一个类的构造方法。
2,用构造方法去创建一个实例对象。
//StringBuffer.class获得方法时要用到的类型
Constructor c1=String.class.getConstructor(StringBuffer.class);
//调用获得的方法时要用相同类型的实例对象。
String str2=(String)c1.newInstance(new StringBuffer("abc"));
System.out.println(str2.charAt(1));
--------------------------------------------------------------------------------------------------------------------------------------
Field字段类:
1,获取字节码上的变量
2,指定从哪个类获取
DEMO:
public class ReflectPoint {
private int x;
public int y;
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
ReflectPoint pt1=new ReflectPoint(3,5);
Field fieldY=pt1.getClass().getField("y");
//FileldY是字节码类上的变量。要用它去取某个对象上的值。
System.out.println(fieldY.get(pt1));
//调用私有的 暴力反射
Field fieldX=pt1.getClass().getDeclaredField("x");
fieldX.setAccessible(true);//设为可访问
System.out.println(fieldX.get(pt1));
//替换字符
private static void changeStringValue(Object obj) throws Exception{
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);
}
}
}
--------------------------------------------------------------------------------------------------------------------
Method类
设置方法格式:
Method methodVar=String.class.getMethod("方法名",参数类型);
调用方法格式:
methodVar.invoke(对象名,参数值);
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- C++ Builder 实现动态生成窗口、控件,以及处理控件事件(转载)
- thread.c
- 解决RichEdit line insertion error的方法(转载)
- JAVA SE Lesson 3
- Android-opencv之CVCamera (转载)
- java 反射
- Epoll 使用示例
- ThreadLocal 线程安全 创建线程变量
- .Net开发之入门
- 好不容易进来了....
- 共享 DLL 中的代码页的实验(摘自Undocument NT)
- VS2008 快捷键大全
- 利用List动态创建多个计时器
- android2.3编译小记