一 如何获取指定运行时类的属性
Class clazz = Person.class; /* newInstance():调用此方法,创建对应的运行时类的对象 */ Person p = clazz.newInstance(); //获取指定属性 //这种方式只能获取public修饰的属性 通常不用这种方式 //Field id=clazz.getField("age"); //方式二 1:getDeclaredField(String fieldName):获取运行时类中指定变量名的属性 Field name = clazz.getDeclaredField("name"); //2:使用上面这种方式默认是不可以访问的 需要设置下面代码保证当前属性是可访问的 name.setAccessible(true); /*设置当前属性的值 set()方法 参数1:指明设置哪个对象的属性 参数2:将次属性值设置为多少 */ name.set(p,"1001"); /* 获取当前属性的值 get():参数一获取哪个对象的当前值 */ String num=(String)name.get(p); System.out.println(num);
二如何获取指定运行时类的方法
Class clazz = Person.class; //创建运行时类的对象 Person p = (Person)clazz.newInstance(); //1.获取指定的某个方法 //getDeclaredMethod():参数1:指明获取的方法的名称 //参数2:指明获取的方法的形参类型 Method show= clazz.getDeclaredMethod("show"); //保证方法可以调用 show.setAccessible(true); /* invoke():参数1:方法的调用者 参数2 给方法形参复制的实参 该方法的返回值为对应类中同名调用方法的返回值 */ show.invoke(p);