2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1 Java 反射機(jī)制 反射機(jī)制Reflection 是 Java 程序 言的特征之一, 允 行中的 開發(fā)語 它 許運(yùn) Java 程序 自身 行 ,或者 “自 ”, 對 進(jìn) 檢查 說 審能直接操作程序的 部 性。例如,使用 能 得 并 內(nèi) 屬 它 獲 Java 中各成 的名 示出 。 類 員 稱并顯 來1.1 一 的例子 個簡單 一 的例子 個簡單考 下面 的例子, 我 看看 慮 這個簡單 讓 們 reflection 是如何

2、工作的。 Java 代碼import java.lang.reflect.*;public class DumpMethods {public static void main ( String args [ ] ) {try {Class c = Class . forName ( args [ 0 ] ) ;Method m [ ] = c . getDeclaredMethods ( ) ;for ( Int i= O ; I &

3、lt; m . length ; i + + )System . out . println ( m [ i ] . toString ( ) ) ;} catch ( Throwable e) {System . err . println ( e ) ;}}}按如下 句 行: 語 執(zhí)Java 代碼java DumpMethods java.util.Stack 的 果 出 : 它 結(jié) 輸 為Java 代碼public jav

4、a.lang.Object java.util.Stack.push(java.lang.Object) public synchronized java.lang.Object java.util.Stack.pop() public synchronized java.lang.Object java.util.Stack.peek() public boolean java.util.Stack.empty() p

5、ublic synchronized int java.util.Stack.search(java.lang.Object) 就列出了 這樣 java.util.Stack 的各方法名以及 的限制符和返回 型。 程序使用 類 它們 類 這個 Class.forName 入指 載定的 ,然后 用 類 調(diào) getDeclaredMethods 取 中定 了的方法列表。 來獲 這個類 義 java.lang.reflect.M

6、ethods 是用 描述某 來中 方法的一 。 個類 單個 個類1.2 始使用 開始使用 開 Reflection用于 reflection 的 ,如 類 Method,可以在 java.lang.relfect 包中找到。使用 些 的 候必 要遵循三 步 : 這 類 時 須 個 驟第一步是 得 想操作的 的 獲 你 類 java.lang.Class 象。在 行中的 對 運(yùn) Java 程序中,用 java.lang.Cl

7、ass 描述 和接 類來 類口等。 下面就是 得一獲 個 Class 象的方法之一: 對Class c = Class.forName(“java.lang.String“); 句得到一這條語 個 String 的 象。 有另一 方法,如下面的 句: 類 類對 還 種 語Class c = int.class; 或者 Class c = Integer.TYPE; 可 得基本 型的 信息。其中后一 方法中 的是基本 型的封裝它

8、們 獲 類 類 種 訪問 類 類 (如 Integer) 中 先定 好的 預(yù) 義 TYPE 字段。 第二步是 用 如 調(diào) 諸 getDeclaredMethods 的方法,以取得 中定 的所有方法的列表。 該類 義System.out.println(“param #“ + j + “ “ + pvec[j]);Class evec[] = m.getExceptionTypes();for (int j = 0; j <

9、evec.length; j++)System.out.println(“exc #“ + j + “ “ + evec[j]);System.out.println(“return type = “ + m.getReturnType());System.out.println(“-----“);}} catch (Throwable e) {System.err.println(e);}}}程序首先取得 這個 method1 的

10、描述,然后 用 類 調(diào) getDeclaredMethods 取一系列的 來獲 Method 象, 分 描 對 它們 別述了定 在 中的每一 方法,包括 義 類 個 public 方法、 protected 方法、 package 方法和 private 方法等。 如果 在程序中使 你用 getMethods 代替 來 getDeclaredMethods, 能 得 承 的各 方法的信息。 你還 獲 繼 來 個取得了 M

11、ethod 象列表之后,要 示 些方法的 型、 常 型和返回 型等就不 了。 些 型是基本 型 對 顯 這 參數(shù)類 異 類 值類 難 這 類 類是 型,都可以由描述 的 象按 序 出。 還 類類 類 對 順 給出的 果如下: 輸 結(jié)Java 代碼name = f1 decl class = class method1 param #0 class java.lang.Object param #1 int exc #

12、0 class java.lang.NullPointerException return type = int ----- name = main decl class = class method1 param #0 class [Ljava.lang.String; return type = void ----- 1.4 取 造器信息 獲 構(gòu) 取 造器信息 獲 構(gòu)取 造器的用法 上述 取方法的用法 似,

13、如: 獲 類構(gòu) 與 獲 類Java 代碼import java.lang.reflect.*;public class constructor1 {public constructor1() {}protected constructor1(int i, double d) {}public static void main(String args[]) {try {Class cls = Class.forName(“constru

14、ctor1“);Constructor ctorlist[] = cls.getDeclaredConstructors();for (int i = 0; i < ctorlist.length; i++) {Constructor ct = ctorlist[i];System.out.println(“name = “ + ct.getName());System.out.println(“decl class = “ +

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論