1. java.lang.Class代表class or Interface;
class : 基本class, array ,enum , primitive type , void
interface : interface , annotation
+isInterface():boolean
+isArray():boolean
2.用obj.class or obj.getClass()可以得到Class物件, 是在建立.class檔案時放入的
因此也可以用Class.forName("ming.MyClass");方式得到Class物件
3.Class物件訊息在建立.class檔案就已經儲存好,編譯時期檢查相對應的.class檔案,
Runtime會將有被使用到的Class資訊Load入定義區,因此有.class不一定會在定義區內,就不能做成物件
使用Class.forName("package.name");將Class註冊入定義區中,並且將此Class回傳
==>Class.forName("package.name").newInstance();就會回傳此物件
ps.只能new無參數建構子,如果沒有此定義就會出錯,也可以使用myClass.getConstructor.newInstance(Object...)來彌補有參數建構子的不足
4.使用Class物件可以得到各式各樣類別的定義, Constructors, Fields, Methods, package, SuperClass等
- Sep 10 Thu 2009 11:47
Java Reflection--淺談Class
全站熱搜
留言列表
發表留言