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