1. 程式人生 > 其它 >Java 反射篇——獲取一般方法、屬性

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));