java:“一切即對(duì)象”,感覺(jué)java語(yǔ)言本身在不斷踐行著這句話。
java反射機(jī)制的基礎(chǔ)來(lái)源于一個(gè)Class類,我們可以通過(guò)這個(gè)類里面的方法來(lái)對(duì)每一個(gè)類進(jìn)行讀取、實(shí)例化等。
對(duì)象表示或封裝一些數(shù)據(jù)。一個(gè)類被加載后,jvm會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)該類的Class對(duì)象(一個(gè)類只會(huì)對(duì)應(yīng)一個(gè)Class對(duì)象),類的整個(gè)的結(jié)構(gòu)信息會(huì)被放在對(duì)應(yīng)的Class對(duì)象中。這個(gè)Class對(duì)象就像一面鏡子一樣,通過(guò)這面鏡子可以看到對(duì)應(yīng)的類的全部信息。
免費(fèi)學(xué)習(xí)視頻教程分享:java視頻教程
例如:
對(duì)一個(gè)Person的實(shí)例化過(guò)程:
Person person = new Person();
應(yīng)用反射來(lái)實(shí)現(xiàn):
Class clz = null; String name = "com.zl.server.Person"; //類的地址 try { clz = Class.forName(name); //將類的地址傳入 Person person = (Person)clz.getConstructor().newInstance(); //獲取構(gòu)造器,進(jìn)行實(shí)例化 return servlet; } catch (Exception e) { e.printStackTrace(); }
反射機(jī)制會(huì)讓類的實(shí)例化更加靈活。
在很多框架中,反射都得到了很多的應(yīng)用,我們可以通過(guò)Class獲取到類的注解、構(gòu)造器、屬性等,來(lái)進(jìn)行