Java反射專題學習-類的建立及初步認識
阿新 • • 發佈:2019-01-04
博主開始學習Java反射基礎系列,用於夯實基礎;今天學習類的建立以及Class Type和類的關係等等,內容比較簡單我就把知識點寫在了程式碼的註釋上,程式僅供參考;
總結一下要點:
1.Java中任何一個類都是Class類的例項物件
2.一個類只可能是一個Class類的一個例項物件,不可能有多個例項物件
3.Class Type(類型別)和Class的例項化物件是一個意思 不要搞混淆
4.不僅僅是可以通過類去得到Class Type,Class Type也可以建立類
程式碼如下:(重點在於類和Class Type的區別以及聯絡)
/** * @Description 類的建立 * @Date 2019/1/2 14:55 * @Created by FLXH */ public class Main { public static void main(String[] args) { //表明foo是Foo類創建出來的一個例項物件 Foo foo = new Foo(); //任何一個類都是Class的例項物件,這個例項物件有三種表示方式,現在以Foo類作為演示 //1.第一種建立Class的例項物件告訴我們任何一個類都有一個隱含的成員變數c,名為class Class c1 = Foo.class; //2.第二種建立方式,通過類的物件的getClass方法,可以得到這個類的Class例項物件 Class c2 = foo.getClass(); //第三種建立方式:通過Class的forName方法 Class c3 = null; try { c3 = Class.forName("Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //下面兩行程式碼的結果輸出都為true,證明一個類只可能是Class類的一個例項物件(這裡c1,c2,c3都是Foo類) System.out.println(c1 == c2); System.out.println(c2 == c3); //這裡給出一個定義"類型別(Class Type)"(Java官網中這樣說的) //從這個例子可以給出Class Type的含義:c1,c2,c3都是Foo類的Class Type,而foo則是Foo類的物件,這兩者不要搞混淆 //上面幾種方法都是通過類去建立Class的例項物件,我們當然可以通過Class例項物件(Class Type)去建立類 try { //這樣就建立了一個Foo類的一個物件(foo1) Foo foo1 = (Foo) c1.newInstance(); //我們可以測試一下 foo1.print(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } /** * 任何類都是一個物件,都是java.lang.Class類的例項物件 */ class Foo { void print(){ System.out.println("test"); } }