Java 反射篇——獲取一般方法、屬性
阿新 • • 發佈:2022-03-27
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));