1. 程式人生 > >Java高階程式設計開發之反射機制的應用

Java高階程式設計開發之反射機制的應用

瞭解反射機制之前,我們要明確一點,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類不存在編譯也能通過。