Java 反射篇——获取一般方法、属性

Java 反射篇——获取一般方法、属性

代码

  • 获取一般方法
Class<?> myClass = Class.forName("com.zhang.reflect.Student");
Object myObject = myClass.getDeclaredConstructor().newInstance();
System.out.println("======获取一般方法====");
// 获取方法等都是在类模板上面操作的
// 获取所声明的方法(public private等)
Method[] methods = myClass.getDeclaredMethods();
for (Method method : methods){
  System.out.println(method.getModifiers());
  System.out.println(Modifier.toString(method.getModifiers())); // 人性化显示
  // 获取一般方法上面的所有参数
  Parameter[] parameters = method.getParameters();
  for (Parameter parameter : parameters){
    // 返回的参数类型为一个对象
    System.out.println(String.format("参数:%s  %s ", parameter.getType().getTypeName(),parameter.getName()));
  }
}
  • 获取属性
Class myClass = Class.forName("com.zhang.reflect.Student");
//  由DNA具体产生的一个人,实例化
Object o = myClass.getDeclaredConstructor().newInstance();
// 获取这个类对象的所有参数
Field[] declaredFields = myClass.getDeclaredFields();
for (Field field : declaredFields){
  // 设置字段为可以访问
  field.setAccessible(true);
  System.out.println(field.getModifiers());
  System.out.println(Modifier.toString(field.getModifiers()));
  System.out.println(field.getName());  // 获取属性的名
  System.out.println(field.getType());
  System.out.println(field.getType().getName());
  System.out.println(field.get(o));  // 获取一个具体的人,这个DNA在这个人身上的具体表现的值
}
Class<?> myClass = Class.forName("com.zhang.reflect.Student");
Object o = myClass.getDeclaredConstructor().newInstance();

// 获取指定的属性
Field name = myClass.getDeclaredField("name");
// 是一个对象
System.out.println(name);
// 设置为可以访问
name.setAccessible(true);
System.out.println(name.get(o));
posted @ 2022-03-27 19:25  ElloeStudy  阅读(127)  评论(0编辑  收藏  举报