构造方法_普通方法_成员变量的反射
2011-06-22 23:59
281 查看
1、构造方法的反射
2、普通方法的反射
3、成员变量的反射
ReflectPoint.java
package itcast.cn.Reflect; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; public class TestReflect { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String str1 = "abc"; String str2 = "bcd"; Person p = new Person(); Class cls1 = str1.getClass(); Class cls2 = str2.getClass(); Class cls3 = p.getClass(); Constructor constructor = str1.getClass().getConstructor(StringBuffer.class); String str = (String) constructor.newInstance(new StringBuffer("abc")); // 创建一个String对象 System.out.println(str.charAt(2)); } }
2、普通方法的反射
package itcast.cn.Reflect; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; public class TestReflect { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String str1 = "abc"; //str1.charAt(1); Method methodCharAt = str1.getClass().getMethod("charAt", int.class); System.out.println(methodCharAt.invoke(str1, 1)); System.out.println(methodCharAt.invoke(str1, new Object[] {2})); } }
3、成员变量的反射
package itcast.cn.Reflect; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; // 使用反射将一个类中的成员变量为String类型的值中的"b"替换成"a" public class TestReflect { public static void main(String[] args) throws Exception { ReflectPoint rp = new ReflectPoint(3, 5); Field fieldY = rp.getClass().getField("y"); System.out.println(fieldY.get(rp)); Field fieldX = rp.getClass().getDeclaredField("x"); fieldX.setAccessible(true); System.out.println(fieldX.get(rp)); System.out.println("在没有使用反射之前:" + rp.toString()); changeFieldValue(rp); System.out.println("在没有使用反射之后:" + rp.toString()); } private static void changeFieldValue(Object obj) throws Exception { Field[] fields = obj.getClass().getFields(); for (int i=0; i<fields.length; i++) { Field field = fields[i]; if (field.getType() == String.class) { String oldValue = (String)field.get(obj); String newValue = oldValue.replace("b", "a"); //System.out.println(changeValue); field.set(obj, newValue); } } } }
ReflectPoint.java
package itcast.cn.Reflect; public class ReflectPoint { private int x; public int y; public String s1 = "bbbb"; public String s2 = "abcd"; public String s3 = "aabb"; public ReflectPoint(int x, int y) { this.x = x; this.y = y; } public String toString() { return "s1: " + s1 + " s2: " + s2 + " s3: " + s3; } }
相关文章推荐
- 反射_通过反射获取成员变量、构造方法、成员方法的使用
- JAVA反射调用无参构造、有参构造、普通方法、成员操作
- Java SE练习 - 反射获取对象构造方法、成员变量、成员方法
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
- java反射之获取方法,成员变量,构造方法
- JavaSE8基础 抽象类中可以有 普通的成员变量和构造方法
- 18 理解反射的概念19构造方法的反射应用20成员变量的反射 21成员变量反射的综合案例22成员方法的反射
- java构造方法、成员变量、方法所对应的反射实例
- Java中静态块,静态成员变量,构造块,普通成员变量,构造方法的执行顺序
- 通过反射获取构造方法,成员变量及成员方法
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 基础反射概念之调用构造和普通方法和成员
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- java反射2-获取构造方法、成员变量、成员方法
- 反射(三)之通过反射获取构造方法, 成员变量, 成员方法
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序