方法调用



  • 方法调用
public class ReflectDemo02 {
public static void main(String[] args) throws NoSuchMethodException, 
SecurityException, InstantiationException, IllegalAccessException, 
IllegalArgumentException, InvocationTargetException {
  // 1 找到像
  Class<Book> clazz1 = Book.class;
  //为了简化调用无参数构造函数,可以直接调用像的方法
  Book book=clazz1.newInstance();
  System.out.println(book);
  //自己调用: 1)那个对象 2)那个方法 3)传的参数
  //book.setName("dasb");
  //2 找到方法,因为方法存在重载
  Method m1=clazz1.getDeclaredMethod("setName", String.class);
  //3 调用方法
   m1.invoke(book, "dasb");
   //System.out.println(book);
   Method m2=clazz1.getDeclaredMethod("getName");
   String ret=(String) m2.invoke(book);
   System.out.println(ret);
}
}
  •  字段的取值和赋值
public class ReflectDemo02 {
  public static void main(String[] args) throws
  InstantiationException, IllegalAccessException, 
  NoSuchFieldException, SecurityException {
    // 1 找到像
    Class<Book> clazz1 = Book.class;
    //为了简化调用无参数构造函数,可以直接调用像的方法
    Book book=clazz1.newInstance();
    System.out.println(book);
    //2 找到字段
    Field f1=clazz1.getDeclaredField("name");
    //3 赋值:如果是对象类型 set(object,value),如果基本类型
    setBoolean 等
    f1.setAccessible(true);
    f1.set(book, "dasb");
    //4 取值:对象类型调用 get,而基本类型 getBoolean
    System.out.println(f1.get(book));
    }
  }


原文地址:https://www.cnblogs.com/yuanshuai1026/p/11580543.html