反射,顧名思義,是JAVA中的一個API(應用程式介面)功能,透過它可以全面檢查類別的運行時實例。它是 Java.lang.reflect 套件的一部分。這個包必須在程式開始時導入,然後呼叫函數來理解「反射」的功能。任何階級的行為都可以研究;可以在運行時使用反射 API 提取或修改元資料。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
反射API下擷取類別資訊的常用函數語法如下:
反射類別使用Java.lang.reflect套件中定義的不同方法來提取類別資訊。可以使用 getClass() 方法提取有關類別的信息,使用 getConstructors() 方法提取建構函數,使用 getMethods() 方法提取方法資訊。這些方法在反射 API 中定義,但傳回類別的訊息,包括方法、建構函數等。反射API用於JAVA程式、IDE(整合開發環境),如eclipse、Netbeans。借助以下部分提供的範例可以很好地理解這一點。
下面提到了不同的例子:
代碼:
//package test; import java.lang.Class; public class test{ public static void main(String args[]){ Class<Boolean> c1 = boolean.class; System.out.println("Here, the class name is: "+c1.getName()); Class<test> c2 = test.class; System.out.println("This is another instance of class is used to derive class name : "+c2.getName()); } }
輸出:
說明:請檢查上面提供的範例。它有一個包,其中包含所有名為“test”的類別。測試包有一個“測試聲明”類別。該類別還包含 main 方法,程式將從該方法開始執行。類別“Class
在下一行中,不使用原始資料類型,而是考慮使用名為「test」的使用者定義資料類型「class」來提取資料。 「類別」是一個用名為「C2」的物件實例化的反射類別。這裡測試類別名,並使用該物件使用函數「getName()」提取該類別的名稱。最終輸出包含這些函數的回傳值並顯示在輸出畫面上。
代碼:
//package test; import java.lang.Class; class Simple{} public class test{ public static void main(String args[]){ try{ Class<?> c=Class.<em>forName</em>("Simple"); System.<em>out</em>.println("The result is: "+c.isInterface()); }catch(Exception e){System.<em>out</em>.println(e);} } }
輸出:
說明: 在上面的範例中,建立了一個名為「test」的套件,如前面範例 1 中所建立的。該套件包含一個類別名稱“Simple”,它不是主類別。這裡的主類別是「測試」類,它包含程式將從中開始執行的 main 方法。 「類別>」是反射類別的標識符,它是透過此處名為「c」的物件實例化的。然後,該物件用於提取名為「isInaterface」的函數的決策指示符(True 或 false)。此函數引入一個類別作為參數;在這種情況下,作為參數引入的類別是「Simple」類別。此類別不是接口,因此在輸出畫面中返回“false”作為結果。為了呼叫這個函數,使用了類別物件“c”。
在JAVA中使用反射的一些優點如下:
JAVA反射使得在根本不知道類別名稱的情況下內省類別、介面、方法等成為可能。這一切都是在編譯時完成的。這被認為是 JAVA 最強大的屬性之一,因為它可以用來建立類別的實例,並且可以使用它來提取類別的私有成員。開發人員也可以在運行時使用它並進行資料庫物件映射。
以上是JAVA中的反射的詳細內容。更多資訊請關注PHP中文網其他相關文章!