-
獲取方法信息查看全部
-
編譯時刻加載類是靜態加載類,運行時刻加載類是動態加載類<br> new 創建對象是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類<br> 通過Class a=Class.forName(arg[0]);此時為動態加載,因為編譯時不知道使用哪個類,因此編譯沒有加載任何類,通過編譯。運行時,根據 Java OfficeBetter Word (Word為arg[0],也是類類型),去確定a是哪個類。這就是動態加載。如果word不存在,此時運行會報錯。這就是為何有時候會出現編譯通過,運行報錯的原因。<br> 動態加載一個好處,就是可以隨時增加需要編譯的類。例如沒有excel類,只有word類,也可以運行,需要excel類時再由程序員寫此類(為了能統一控制,word類、excel類需要繼承同一個父類或者繼承同一個接口)。查看全部
-
1)在面向對象的世界里,萬事萬物皆對象。 類是對象,類是java.lang.Class類的實例對象。 There is a class named Class 2)//Foo的實例對象如何表示 Foo foo1=new Foo();//foo1就表示出來了 //Foo這個類也是一個實例對象,Class類的實例對象,如何表示呢? //任何一個類都是Class的實例對象,這個實例對象有三種表示方式 //第一種表示方式--->實際在告訴我們任何一個類都有一個隱含的靜態成員變量class Class c1=Foo.class; //第二種表達方式--->已經知道該類的對象通過getClassF方法 Class c2=foo1.getClass(); //官網c1,c2表示了Foo類的類類型(class type),萬事萬物皆對象,類也是對象,是Class類的實例對象 //這個對象我們稱為該類的類類型 //不管c1 or c2都代表了Foo類的類類型,一個類只可能是Class類的一個實例對象 //第三種表達方式 Class c3=null; c3=Class.forName("com.imooc.reflect.Foo"); //我們完全可以通過類的類類型創建類的對象實例--->通過c1 or c2 or c3創建Foo的實例對象 Foo foo=(Foo)c1.newInstance();//需要有無參數的構造方法查看全部
-
Class類查看全部
-
方法的反射查看全部
-
Class.forName()動態加載類查看全部
-
編譯時刻加載類是靜態加載類,運行時刻加載類是動態加載類<br> new 創建對象是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類<br> 通過Class a=Class.forName(arg[0]);此時為動態加載,因為編譯時不知道使用哪個類,因此編譯沒有加載任何類,通過編譯。運行時,根據 Java OfficeBetter Word (Word為arg[0],也是類類型),去確定a是哪個類。這就是動態加載。如果word不存在,此時運行會報錯。這就是為何有時候會出現編譯通過,運行報錯的原因。<br> 動態加載一個好處,就是可以隨時增加需要編譯的類。例如沒有excel類,只有word類,也可以運行,需要excel類時再由程序員寫此類(為了能統一控制,word類、excel類需要繼承同一個父類或者繼承同一個接口)。查看全部
-
ye de me biao da le -_-查看全部
-
Class c1 = Foo.class;<br> Class c2 = foo.getClass();<br> CLass c3 = Class.forName("com.imooc.reflect.Foo"); c1 == c2 ==c3查看全部
-
得到類的類類型,就可以得到類的任何信息查看全部
-
import java.lang.reflect.Method; public class ClassUtil { /** * 打印類的信息,包括類的成員函數、成員變量(只獲取成員函數) * @param obj 該對象所屬類的信息 */ public static void printClassMethodMessage(Object obj){ //要獲取類的信息 首先要獲取類的類類型 Class c = obj.getClass();//傳遞的是哪個子類的對象 c就是該子類的類類型 //獲取類的名稱 System.out.println("類的名稱是:"+c.getName()); /* * Method類,方法對象 * 一個成員方法就是一個Method對象 * getMethods()方法獲取的是所有的public的函數,包括父類繼承而來的 * getDeclaredMethods()獲取的是所有該類自己聲明的方法,不問訪問權限 */ Method[] ms = c.getMethods();//c.getDeclaredMethods() for(int i = 0; i < ms.length;i++){ //得到方法的返回值類型的類類型 Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName()+" "); //得到方法的名稱 System.out.print(ms[i].getName()+"("); //獲取參數類型--->得到的是參數列表的類型的類類型 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } }查看全部
-
Class c = obj.getClass(); c.getName(); 獲取類的名稱查看全部
-
基本數據類型 void都存在類類型查看全部
-
編譯時刻加載類是靜態加載類,運行時刻加載類是動態加載類<br> new 創建對象是靜態加載類,在編譯時刻就需要加載所有的可能使用到的類<br> 通過Class a=Class.forName(arg[0]);此時為動態加載,因為編譯時不知道使用哪個類,因此編譯沒有加載任何類,通過編譯。運行時,根據 Java OfficeBetter Word (Word為arg[0],也是類類型),去確定a是哪個類。這就是動態加載。如果word不存在,此時運行會報錯。這就是為何有時候會出現編譯通過,運行報錯的原因。<br> 動態加載一個好處,就是可以隨時增加需要編譯的類。例如沒有excel類,只有word類,也可以運行,需要excel類時再由程序員寫此類(為了能統一控制,word類、excel類需要繼承同一個父類或者繼承同一個接口)。查看全部
-
new 創建對象是靜態加載類,在編譯時就需要加載所有的可能使用到的類查看全部
舉報
0/150
提交
取消