有了Class物件,能做什麼?

2021-10-01 14:56:10 字數 1861 閱讀 9791

建立類的物件,呼叫class物件的newinstance()方法

//首先通過反射獲取class物件

class c1

= class.

forname

("com.kuang.reflect.user");

//第一種方法:建立乙個物件

user user =

(user) c1.

newinstance()

;//本質是呼叫了user實體類的無參構造方法,如果沒有無參構造則會報錯

system.out.

println

(user)

;//user

//第三種:就是第一種的

user user4 =

(user) c1.

newinstance()

; method setname = c1.

getdeclaredmethod

("setname"

, string.

class);

//通過反射獲取set方法

//invoke:啟用的意思,引數(物件,"要傳的引數值")

setname.

invoke

(user4,

"歐陽菲菲");

system.out.

println

(user4)

;//user

//通過反射設定屬性

user user5 =

(user) c1.

newinstance()

; field name = c1.

getdeclaredfield

("name");

//不能直接操作私有屬性,必須關閉程式的安全監測,name.setaccessible(true);

name.

setaccessible

(true);

name.

set(user5,

"李太白");

system.out.

println

(user5)

;//user

那如果沒有無參構造,只有帶參構造怎麼通過class物件建立物件呢?

//第二種方法:通過class物件獲取構造器,然後通過構造器建立物件

constructor constructor = c1.

getdeclaredconstructor

(string.

class

,int

.class);

//獲取代餐構造方法建立物件

user user2 =

(user) constructor.

newinstance

("琴江",20

);system.out.

println

(user2)

;//user

//獲取午餐構造方法建立物件

constructor constructor2 = c1.

getdeclaredconstructor()

; user user3 =

(user) constructor2.

newinstance()

; system.out.

println

(user3)

;

另外注意事項:通過class物件獲取的method,field,constructor物件都有setaccessible()方法,

設定為true,代表關閉訪問許可權安全檢查開關,預設為false,即開啟安全檢查開關

能做什麼,想做什麼

做為乙個企業,首先要明確的是自己能做什麼。看到做什麼能賺錢就上 做一手好菜,你可以去開餐館 養雞的,就開個養雞場 會理財的,就做 做投資。不管你能做什麼,至少你要能做一件事,那是安身立命之本呀1.一把菜刀在手,吃喝不愁。做企業,可以先培養自己的優勢,然後謀求發展。把自己的優勢應用到相應的行業中,為其...

VB能做什麼?

vb的強弱爭論由來以久,會c語言的人總帶著一種不屑,就像白人對有色人種一樣,天生帶著一種優越感 那個功能你小小語言真的能實現?劉翔在奧運110欄上奪得了世界第一 中國人 亞洲人 為之振奮不已 但給人總有點那種感覺。就像vb人員會說,vb也可以開發編譯器呢,用友軟體前期還是用vb開發的呢 但也給人那種...

撞球能做什麼?

1 打撞球可以用來娛樂 2 撞球可以當玩具 3 撞球可以當 4 撞球可以做實驗 5 撞球可以造計算機 6 撞球可以造機械人 撞球可以構成宇宙!這一切都可能。因為如果你把乙個個原子看成是撞球的話,這其實無需證明,因為都是現實。宇宙的本質可能並不複雜,可能的規律也許就那麼幾條。而人類最核心的矛盾是無限的...