Web基礎02 反射

2021-10-07 23:37:54 字數 3800 閱讀 8131

二、反射:框架設計的靈魂

獲取class物件的方式:

class.forname(「全類名」):將位元組碼檔案載入進記憶體,返回class物件

* 多用於配置檔案 ,將類名定義在配置檔案中。讀取檔案,載入類

類名.class:通過類名的屬性class獲取(載入進記憶體後)

* 多用於引數的傳遞

物件.getclass():getclass()方法在object類中定義著。(已經有物件時)

* 多用於物件的獲取位元組碼的方式

public

class

reflectdemo0

}

class物件功能:

獲取成員變數們

* field getfields() :獲取所有public修飾的成員變數

* field getfield(string name) 獲取指定名稱的 public修飾的成員變數

* field getdeclaredfields() 獲取所有的成員變數,不考慮修飾符

* field getdeclaredfield(string name)

public

class

reflectdemo1

system.out.

println

("----------------");

//2 field getfield(string name) 獲取指定名稱的 public修飾的成員變數

field a = personclass.

getfield

("a");

//宣告異常

//獲取成員變數的值

person p =

newperson()

;//object get​(object obj) 返回由該 field表示的字段在指定物件上的值

object value = a.

get(p)

; system.out.

println

(value)

;//null

//設定a的值

//void set​(object obj, object value) 將指定的物件引數中由此 field物件表示的字段設定為指定的新值

a.set(p,

"張三");

system.out.

println

(p);

system.out.

println

("***************===");

//field getdeclaredfields() 獲取所有的成員變數,不考慮修飾符(包括private)

field[

] declaredfields = personclass.

getdeclaredfields()

;for

(field declaredfield : declaredfields)

//field getdeclaredfield(string name)

field d = personclass.

getdeclaredfield

("d");

//忽略訪問許可權修飾符的安全檢查

d.setaccessible

(true);

//暴力反射,新增這行**就可以訪問私有變數了

object value2 = d.

get(p)

;//can not access a member of class domain.person with modifiers "private"

// system.out.println(value2); //非法訪問異常--私有

system.out.

println

(value2)

;//null

}}

獲取構造方法們

* constructor> getconstructors()

* constructor getconstructor(… parametertypes)

* constructor getdeclaredconstructor(… parametertypes)

* constructor> getdeclaredconstructors()

public

class

reflectdemo2

system.out.

println

("----------------");

// constructorconstructor1 = personclass.getconstructor(); //使用空參構造器

// system.out.println(constructor1); //public domain.person()

// person person1 = constructor1.newinstance();

//如果使用空引數構造方法建立物件,操作可以簡化:class物件的newinstance方法,即不用先獲取構造器

person person1 = personclass.

newinstance()

; system.out.

println

(person1)

;//person、

// 暴力反射,當使用constructor> getdeclaredconstructors()私有構造器構造物件時可使用

// constructor.setaccessible(true);

}}

獲取成員方法們:

* method getmethods()

* method getmethod(string name, … parametertypes)

* method getdeclaredmethods()

* method getdeclaredmethod(string name, … parametertypes)

獲取全類名

* string getname()

public

class

reflectdemo3

//3 獲取類名

string classname = personclass.

getname()

; system.out.

println

(classname)

; 全類名:包名.類名

}}

練習案例:

配置檔案反射

將需要建立的物件的全類名和需要執行的方法定義在配置檔案中

在程式中載入讀取配置檔案

使用反射技術來載入類檔案進記憶體

建立物件

執行方法

//配置檔案pro.properties

classname=domain.student

methodname=sleep

/*

假設的框架類(直接用,不更改)

(只需要改變配置檔案,就可以建立不同的類和執行不同的方法)

*/public

class

reflecttest

}

反射基礎概念 WEB應用部署

反射基礎概念 web應用部署 web應用部署 1 發布 方式是通過虛擬目錄,現在這個方式我不用 2 還要複製web站點 製作web站點的windows安裝程式這兩個我也不用 3 預編譯站點麼明白 中小型站點,現在基本都是 server 08的伺服器,iis7或者以上版本,直接建站,簡單配置。即使存在...

Web開發 02 HTML基礎

標題標籤 html 共提供六級標題標籤 段落標籤 段落標籤將網頁分成若干個段落。預設情況下,文字在乙個段落中會自動根據瀏覽器視窗的大小換行。水平線標籤 水平線標籤的效果就是一條分割線。一般用於將段落與段落分開,使得層次更加分明。換行標籤 html 中換行操作只能通過標籤來完成,文字中的回車符是沒有作...

Web測試方法 02

1.頁面鏈結檢查 2.相關性檢查 3.檢查按鈕的功能是否正確 4.字串長度檢查 輸入超出需求所說明的字串長度的內容,看系統是否會檢查字串長度,還要檢查需求規定的字串長度是否正確合理。5.字元型別檢查 在應該輸入指定型別內容的地方輸入其它型別的內容,看系統是否會檢查字元型別,例如 在豆丫網後台版本號處...