-
new是靜態加載類,編譯時刻全部加載查看全部
-
Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclaredConstructors(); constructor.getParameterType() constructor.getName();查看全部
-
getFields() getDeclaredFields() field.getType();查看全部
-
method.getName()獲得方法的名稱 method.getReturnType()獲取方法的返回類型 method.getParameterTypes參數類型數組查看全部
-
Class c1 = double.class; Class c2 =Double.class; c2.getName()包含包名的 c2.getSimpleName()不包含包名的查看全部
-
public static void main(String[] args){ args[0]..... } 運行時傳入,javac ....java java xxx xx 后面就是傳的這個數;多個參數,以空格分隔。比如輸入java Hell a abc haha public class Hello{ public static void main(String[] args){ for(String s : args){ System.out.println(s.toUpperCase()); } } }查看全部
-
new 創建出來類的實例, 屬于靜態加載類,編譯時需要全部加載,如果一個類有錯誤,則無法運行。 Class.forName()是動態加載類,運行時才加載,編譯時不加載。 使用Eclipse和MyEclipse時,感覺不明顯,因為編譯和運行是一起進行的。查看全部
-
通過類的類類型,可以創建該類的實例對象,使用newInstance(),但是需要進行類型強制轉換,同時,該類必須含有無參構造方法。查看全部
-
任何一個類,都是Class類的實例對象; 有三種表示形式: 1.Class c1 = Foo.class;說明任何一個類都有一個隱含的class靜態成員變量。 2.Class c2 = foo1.getClass();通過類的實例對象,獲取該類的類類型。 c1,c2是獲取Foo類的類類型。 3.Class c3 = Class.forName("invoke.Foo"); 包名加類名,會有異常需要捕獲ClassNoFoundException。查看全部
-
通過方法的反射,繞過編譯; Class Method的操作,是繞過泛型來操作的。 但是list,list1的操作,是有泛型限制的查看全部
-
java中集合的泛型,只在編譯階段有效,用來限定輸入的,編譯之后是去泛型的。查看全部
-
使用new關鍵字創建對象是靜態加載類 在編譯時候就需要加載所有可能使用到的類查看全部
-
通過反射了解集合泛型的本質,通過Class,Method來認識泛型的本質: 1、無泛型集合:ArrayList list = new ArrayList(); String類型集合:ArrayList<String> list1 = new ArrayList<String>(); 2、list和list1的類類型是相等的(已驗證),說明編譯之后集合的泛型是去泛型化的,Java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯就無效了,驗證:我們可以通過方法的反射來操作,繞過編譯,如下: 3、上面已經獲取兩者的類類型,獲取該類類型的add方法(利用反射,給String類型集合add一個int類型) 4、獲取的該方法 .invoke(list1,20); 5、驗證list1里面是否有int類型的20查看全部
-
方法的反射操作 1、獲取一個方法就是獲取類的信息,獲取該方法屬于類的類類型 2、獲取方法類(是方法的名稱和參數列表決定的),getMethod(“方法名”,int.class,int.class,....)獲取public方法,getDelcaredMethod獲取自己聲明的方法。 3、用方法進行反射操作,invoke
舉報
0/150
提交
取消