一 .通过反射获得对象的无返回值方法
eg:
@Test public void TestReflex() { dog = new DogBean("旺旺"); //获取该对象所在的信息 Class class3 = null; try { class3 = Class.forName("com.example.administrator.tests.bean.DogBean"); } catch (ClassNotFoundException e) { e.printStackTrace(); } /** * 通过反射获得对象的方法 */ try { Method testMethod = class3.getDeclaredMethod("getDogName",String.class); //运行时忽略访问修饰符 testMethod.setAccessible(true); System.out.print(" 获得对象的方法开始: " + "\n"); //反射调用对象的方法 testMethod.invoke(dog,""); System.out.print(" 获得对象的方法结束: " + "\n"); } catch (Exception e) { e.printStackTrace(); } |
输出结果:
获得对象的方法开始:
我的名字叫 : 旺旺
获得对象的方法结束:
二. 通过反射获得对象的有返回值方法
eg:
@Test public void TestReflex() { dogAge = new DogBean(22); //获取该对象所在的信息 Class class3 = null; try { class3 = Class.forName("com.example.administrator.tests.bean.DogBean"); } catch (ClassNotFoundException e) { e.printStackTrace(); } /** * 通过反射获得对象的方法 */ try { Method testMethod = class3.getDeclaredMethod("getDogAge",Integer.class); //运行时忽略访问修饰符 testMethod.setAccessible(true); System.out.print(" ------------------------ " + "\n"); //反射调用对象的方法 Object obje = testMethod.invoke(dogAge, 66); System.out.print(" 获取值 :" +obje+ "\n"); System.out.print(" ---------------------" + "\n"); } catch (Exception e) { e.printStackTrace(); } |
输出结果 :
------------------------ 获取值 :66 --------------------- |
三. 通过反射获取属性值及访问修饰符
eg:
@Test public void TestReflex() { dogAge = new DogBean(22); //获取该对象所在的信息 Class class3 = null; try { class3 = Class.forName("com.example.administrator.tests.bean.DogBean"); } catch (ClassNotFoundException e) { e.printStackTrace(); } /** * 通过反射获得对象属性及修饰符 */ Field[] fields = class3.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { System.out.print(" 获取属性值 :" + fields[i].getName() + "\n"); System.out.print(" 获取属性修饰符 :" + Modifier.toString(fields[i].getModifiers()) + "\n"); } |
输出结果:
获取属性值 :dColor 获取属性修饰符 :private 获取属性值 :dAge 获取属性修饰符 :private 获取属性值 :dSex 获取属性修饰符 :private 获取属性值 :dName 获取属性修饰符 :private |