Java高階程式設計開發之反射機制的應用
阿新 • • 發佈:2018-12-09
瞭解反射機制之前,我們要明確一點,java語言是面向物件程式設計的開發語言。所以,在java的世界中,萬物皆物件。
那麼這樣的話,我們在程式設計開發過程中,所建立的類是不是物件呢?是誰的物件呢?是哪個類的物件呢?
答案是肯定的。類也是物件,它是java.lang.Class的物件。
獲取Class類的物件有三種方式:
1.已知其他類的例項,獲取Class物件(不常用)
Foo foo = new Foo();
Class c1 = foo.getClass();
2.知道類名獲取Class物件
Class c2 = Foo.class;
3.通過類的詳細路徑獲取Class物件
Class c3 = Class.forName("com.imo.test.Foo");
c1、c2、c3是Class的例項物件,官方文件稱之為Foo類的型別(class type)。
編譯時的載入是靜態,執行時的載入就是動態載入。像上面的new Foo(),就是靜態載入,在編譯的時候,如果Foo類不存在,就會報錯,編譯不能通過。Class.forName("com.imo.test.Foo")是動態載入,這種方式獲取類的例項,編譯階段不會有任何問題,即使Foo類不存在編譯也能通過。