摘要:反射非常強大和有用。另外,反射可以用在映射結果集的列名到對象的方法。本教程將深入介紹反射。本教程還將清除一些關于范型信息在運行時可用性的認知混淆。類對象使用反射時,起點通常是需要使用反射檢視的類的對象。
Java反射可以在運行時檢視類、接口、屬性和方法,而無需在編譯時知道類名、方法名等等。它也同樣使用反射支持實例化新的對象、調用方法和get/set屬性值。
Java反射非常強大和有用。例如, Java反射可以用在映射JSON文件的屬性到Java 對象的get/set方法,如Jackson、Gosn、Boon等庫的實現。另外,反射可以用在映射JDBC結果集的列名到Java對象的get/set方法。
本教程將深入介紹Java反射。它將解釋Java反射的基礎知識,包括如何使用數組、注解、范型和動態代理,以及動態類的加載和重新加載。
它還將向您展示如何執行更具體的Java反射任務,例如讀取類的所有getter方法,或訪問類的私有字段和方法。
本教程還將清除一些關于范型信息在運行時可用性的認知混淆。一些人聲稱所有范型信息在運行時丟失,這是不正確的。
本教程描述基于Java8。
這是一個快速的Java反射示例,向你展示使用反射的代碼格式:
Method[] methods = MyObject.class.getMethods(); for(Method method : methods){ System.out.println("method = " + method.getName()); }
Method [] methods=String.class.getMethods(); for (Method method:methods) { logger.debug("String 類方法名稱:{},參數個數:{}",method.getName(),method.getParameterCount()); }
本示例從一個名為MyObject的類中獲取一個Class對象。使用這個class對象展示獲得它的方法列表,循環并輸出方法名稱。
Java 類對象使用Java反射時,起點通常是需要使用反射檢視的類的Class對象。例如,獲得名為MyObject類的Class對象可以這么寫:
Class myObjectClass = MyObject.class;
現在,你可以引用類MyObject的Class對象。
在Java Reflection Class tutorial中有Class對象更詳細的描述。
一旦你擁有表示某些類的Class對象的引用,你可以訪問這些類的方法和屬性。下面是訪問一個Java類方法和屬性的示例:
Class myObjectClass = MyObject.class; Method[] methods = myObjectClass.getMethods(); Field[] fields = myObjectClass.getFields();
一旦擁有一個java類的方法和屬性的引用,就可以開始檢視它們。你可以獲得方法和屬性的名稱,采用的參數等等。你甚至可以通過這些方法和屬性引用調用方法和使用get/set屬性值。
在Java Reflection Fields tutorial和Java Reflection Methods tutorial教程中有關于訪問方法和屬性的更詳盡的描述。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77152.html
摘要:反射機制一結合官方通過編寫的反射教程,復習一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應用行為的一種工具。因為反射需要動態的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權限,在特定的安全環境下不一定存在。 Java反射機制(一) 結合Oracle官方通過JDK8編寫的反射教程,復習一下反射的知識。結尾篇補一個小例子。 主要內容 這次博客的主要內容就是簡...
摘要:使用反射可以在運行時檢視類。類名類修飾符等包信息超類所實現的接口構造函數方法屬性注解類中附加了很多信息,你可以在獲得一個完整列表。全限定名包含所有的包名。構造函數你可以訪問類的構造函數,代碼如下構造函數的詳細教程在章節。 使用反射可以在運行時檢視Java類。檢視類通常是使用反射時所做的第一件事情。從類中可以獲得下面的信息。 類名 類修飾符(private、public、synchro...
閱讀 2617·2021-11-16 11:40
閱讀 3411·2021-11-08 13:26
閱讀 876·2021-10-28 09:32
閱讀 3534·2021-09-13 10:26
閱讀 809·2019-08-30 15:55
閱讀 783·2019-08-30 15:44
閱讀 1911·2019-08-30 15:44
閱讀 1758·2019-08-30 13:48