摘要:知識點總結反射獲取類的信息知識點總結反射應用反射的,獲取類的信息類的名字屬性方法構造器等獲取類名類的全路徑名稱類名獲取屬性信息只能獲取的屬性獲取所有的屬性根據屬性名稱獲取屬性根據屬性名稱獲取屬性獲取方法信息獲取所有的方法,包括父類的方法獲
Java知識點總結(反射-獲取類的信息)
@(Java知識點總結)[Java, 反射]
應用反射的API,獲取類的信息(類的名字、屬性、方法、構造器等)
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test02 { // 獲取類名 private static void getName(Class clazz){ String name = clazz.getName(); System.out.println(name); // com.gs.Student 類的全路徑名稱 String simpleName = clazz.getSimpleName() ; System.out.println(simpleName); // Student 類名 } // 獲取屬性信息 private static void getFields(Class clazz){ Field[] fields = clazz.getFields() ; // 只能獲取 public 的屬性 for (Field f : fields) { System.out.println(f); // public double com.gs.Student.score } Field[] declaredFields = clazz.getDeclaredFields() ; // 獲取所有的屬性 for (Field df : declaredFields) { System.out.println(df); } try { Field field = clazz.getField("score"); //根據屬性名稱獲取public 屬性 System.out.println(field); Field declaredField = clazz.getDeclaredField("name"); System.out.println(declaredField); //根據屬性名稱獲取 private 屬性 } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } // 獲取方法信息 public static void getMethod(Class clazz){ Method[] methods = clazz.getMethods() ; //獲取所有的 public 方法,包括父類的方法 for (Method m : methods) { System.out.println(m); } System.out.println("~~~~~~~~~~~"); Method[] declaredMethods = clazz.getDeclaredMethods(); // 獲取本類聲明的所有的方法 for (Method dm : declaredMethods) { System.out.println(dm); } try { Method m = clazz.getMethod("getName", null); //獲取指定名字的方法,后面的形參表示獲取方法的參數類類型 System.out.println(m); //如果方法有參,則必須傳遞參數類型對應的 Class 對象 Method dm = clazz.getDeclaredMethod("setName", String.class); System.out.println(dm); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } // 獲取構造方法信息 public static void getConstructor(Class clazz){ try { // 獲取指定名稱的構造方法 Constructor c = clazz.getDeclaredConstructor(int.class,String.class); System.out.println(c); //獲取所有構造方法 Constructor[] cs= clazz.getConstructors() ; for (Constructor constructor : cs) { System.out.println(constructor); } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } public static void main(String[] args) { String path = "com.gs.Student"; try { Class clazz = Class.forName(path); //getName(clazz); //getFields(clazz); //getMethod(clazz); getConstructor(clazz); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71581.html
摘要:知識點總結反射介紹知識點總結反射反射程序在運行狀態中,可以動態加載一個只有名稱的類動態調用類的所有屬性和方法加載完類之后,在堆內存中,就產生了一個類型的對象一個類只有一個對象。 Java知識點總結(反射-介紹) @(Java知識點總結)[Java, 反射] 反射 程序在 運行狀態中 ,可以動態加載一個只有名稱的類 (動態調用類的所有屬性和方法)Class c = Class.for...
摘要:知識點總結反射通過反射操作類的屬性和方法知識點總結反射使用反射操作類的屬性和方法通過反射調用構造方法,構造對象其實調用無參構造器張三調用有參構造器李四通過反射調用普通方法獲取方法激活方法王武王武通過反射操作屬性是屬性,如果不寫會這個私有屬 Java知識點總結(反射-通過反射操作類的屬性和方法 ) @(Java知識點總結)[Java, 反射] 使用反射操作類的屬性和方法: import ...
摘要:反射機制一結合官方通過編寫的反射教程,復習一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應用行為的一種工具。因為反射需要動態的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權限,在特定的安全環境下不一定存在。 Java反射機制(一) 結合Oracle官方通過JDK8編寫的反射教程,復習一下反射的知識。結尾篇補一個小例子。 主要內容 這次博客的主要內容就是簡...
摘要:通過反射獲取無參構造方法并使用得到無參構造方法獲取所有的修飾的構造方法。如果方法沒有返回值,返回的是反射獲取空參數成員方法并運行代碼演示反射獲取成員方法并運行獲取對象中的成員方法獲取的是文件中的所有公共成員方法包括繼承的類是描述 01類加載器 * A.類的加載 當程序要使用某個類時,如果該類還未被加載到內存中,則系統會通過加載,連接,初始化三步來實現對這個類進行初始化。 ? ...
摘要:通過反射獲取帶參無返回值成員方法并使用設置安全檢查,訪問私有構造函數必須創建實例這種不行,注意和方法需要傳遞參數測試復制這個功能獲取私有方法,同樣注意和的區別賦予訪問權限調用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
閱讀 2054·2021-10-08 10:04
閱讀 3079·2021-09-22 10:02
閱讀 2225·2019-08-30 15:56
閱讀 825·2019-08-30 15:54
閱讀 921·2019-08-30 15:54
閱讀 1276·2019-08-30 15:53
閱讀 2508·2019-08-30 11:21
閱讀 3557·2019-08-30 10:56