java——reflect
一.Class類的使用 什么是Class類? 1:在面向對象的世界中,萬事萬物皆對象。
java語言中,靜態的成員,普通數據類型類是不是對象呢?
是,對象!是類的對象!
類是誰的對象嗎?
類也是是對象,類是java.lang.Class 類的實例對象!
現在有個類它的名字就是Class! There is a class name Class.任何一個類都是Class的實例對象,這種實例對象有三種表示方式
class Foo{}Foo f = new Foo();//第一種 Class c1 = 類名.class; //Class c1 = Foo.class;//第二種 Class c2 = 對象.getClass(); //Class c2 = f.getClass();//c1和c2 表示了Foo類的類 類型(class type) //第三種 使用class.forName();Class c3 = class.forName("XXX.XX.Foo");2.動態加載和靜態加載
編譯時刻加載類是靜態加載,運行時刻加載類是動態加載類 。
new 創建對象是靜態加載類,在編譯時刻就需要加載所有可能使用到的類。 如何解決在編譯時候忽略那些不需要加載的類呢?
解決方案:通過動態加載類!使用Class.forName(“”);
二.方法的反射
基本的數據類型。void的關鍵字都存在類 類型!
1.區別
getName : 基本和引用類型! getSimpleName : 引用類型不包括包名,只有類的名稱。三.成員變量的反射
成員變量是 java.lang.reflect.Field 的類對象!
Field 類封裝了關于成員變量的操作!
getField():獲取的是所有的public的成員變量的信息 getDeclaredFields():獲取的是該類自己的成員變量的信息四.構造函數的反射
構造函數也是對象,是java.lang.Constructor中封裝了構造函數的信息。
getConStructors 獲取所又的public的構造函數 getDeclaredConstructors 得到的是自己申明的所有的構造函數5.java的類加載機制
反射都是運行時刻執行的!也就是動態加載!
集合中泛型的使用?
集合中的泛型是防止錯誤輸入的,只有編譯階段有效, 繞過編譯就無效了!也就是說泛型只在編譯的時候有用,所以我們可以通過方法的反射來操作,繞過編譯!
使用傳送技能,讓你快速學習反射知識!
慕課學習反射視頻地址: http://www.imooc.com/video/3738
歡迎訪問我的csdn博客,我們一同成長!
“不管做什么,只要堅持下去就會看到不一樣!在路上,不卑不亢!”
博客首頁:http://blog.csdn.net/u010648555
新聞熱點
疑難解答