Java反射機制demo(一)——實例化Class對象,通過對象獲得包名和類型
使用Java中的 本地類作為實驗對象,避免自定義的類帶來的一些不便。
public static void main(String[] args) { try { Class c1 = Class.forName("java.lang.Integer"); System.out.println(c1.getName()); } catch (ClassNotFoundException e) { System.out.println("forName出錯"); } Integer i = 1; Class c2 = i.getClass(); System.out.println(c2.getName()); Class c3 = Integer.class; System.out.println(c3.getName()); }
上面這段程序中,最后的輸出結果為:
java.lang.Integer java.lang.Integer java.lang.Integer
如果使用基本類型int,只有最后一種方法才好用,因為forName的方式如果只是Integer,而不是java.lang.Integer就會拋出異常,這個方法不會自動的去搜索,只會按照給出的路徑嚴格尋找,尋找不到就拋出ClassNotFoundException。第二種方法也非常方便,但是基本類型就無能為力了,因為java中的8種基本類型不是Object的子類,而第三種方法就會簡潔而且高效。