3、反射:反射就是把java中的各种成分映射成响应的java类
1、反射字段(Field)
Field field1 = 类字节码.getField();
Field field2 = 类字节码.getDeclaredField(); //暴力反射
filed1.get(对象); 得到对象上的字段的值
//对于暴力反射字段,通常用到的两个方法
get(对象);
set(对象,值);
2、反射构造器(Constructor)
Constructor<StringRef> constructor = StringRef.class.getConstructor(int.class,int.class); //得到构造器
StringRef stringRef2 = (StringRef) constructor.newInstance(4,7); //使用newInstance获得对象实例
Field f1 = stringRef2.getClass().getDeclaredField("x"); //与StringRef.class.getDeclaredField("x")类似,得到该字段
f1.setAccessible(true); //使用单一安全性检查(为了提高效率)为一组对象设置 accessible 标志的便捷方法。
System.out.println(f1.get(stringRef2));
3、反射方法(Method)
例子:目的是获得String类中chartAt方法使用invoke方法可以直接调用发射方法
String string = "abc"; //创建对象
Method methodChartAt = String.class.getMethod("charAt",int.class);
System.out.println(methodChartAt.invoke(string, 1)); //invoke(Object obj,Object..args)对指定参数的指定对象调用由此Method对象表示的底层方法
|