天天看點

類名.class, class.forName(), getClass()差別

1:Class cl=A.class;

JVM将使用類A的類裝載器, 将類A裝入記憶體(前提是:類A還沒有裝入記憶體),不對類A做類的初始化工作.傳回類A的Class的對象。

2:Class cl=對象引用o.getClass();

傳回引用o運作時真正所指的對象(因為:子對象的引用可能會賦給父對象的引用變量中)所屬的類的Class的對象 。

3:Class.forName("類名");

.裝入類A,并做類的初始化

[color=red].getClass()是動态的,其餘是靜态的。

.class和class.forName()隻能傳回類内field的預設值,getClass可以傳回目前對象中field的最新值

Class.forName() 傳回的是一個類,.newInstance() 後才建立一個對象,Class.forName()的作用是要求JVM查找并加載指定的類,也就是說JVM會執行該類的[/color]

例子:

待反射代碼:

反射代碼: