-
int a =5 靜態 不是對象查看全部
-
動態加載,可以在 class使用到的時候才進行加載,防止因為一個類有錯誤導致多個類跑不起來的問題。--動態加載查看全部
-
1,基本的數據類型,關鍵字都存在類類型。 例子:int.class String.class Double.class Class c = obj.getClass(); 方法也是對象: Method類:方法對象 Method[] ms = c.getMethods();//獲取所有public方法,包括父類繼承的方法 ms.getName();//方法的名稱 Class returnType = ms.getReturnType(); returnType.getName();//返回值類型 Class[] paramTypes = ms.getParameterTypes();//參數的類類型數組查看全部
-
已完成查看全部
-
獲取方法:getMethod(方法名,參數列表) 參數列表為:參數類型.class,也可以寫成數組new Class[]{參數類型.class}查看全部
-
基本數據類型、返回值類型void都存在類類型,如:int.class,void.class,double.class查看全部
-
new對象是編譯時加載(靜態),forName是運行時加載(動態) 短期類升級或者功能型的類要使用動態加載查看全部
-
6.通過反射了解集合泛型的本質 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通過反射了解集合泛型的本質 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(20); ArrayList<String> list1 = new ArrayList<String>(); list1.add("hello"); //list1.add(20);//這個加入是錯誤的:The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int) Class c1 = list.getClass(); Class c2 = list1.getClass(); System.out.println(c1==c2); //反射的操作都是編譯后的操作 /** * c1=c2結果返回TRUE說明編譯后集合的泛型是去泛型化的 * java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯后就無效了 * 驗證:我們可以通過反射操作來繞過編譯 */ try { Method method = c2.getMethod("add", Object.class); method.invoke(list1, 20); System.out.println(list1); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }查看全部
-
5.方法的反射 (1)如何獲取某個方法 方法的名稱和方法的參數列表才能唯一決定某個方法 (2)方法的反射的操作 mentod.invoke(對象,參數列表) eg: A a1= new A(); Class c = a1.getClass(); Method method = c.getMethod("print",int.class,int.class); method.invoke(a1);//等同于a1.print();的效果查看全部
-
4.打印類成員變量信息 /** * 打印類成員變量信息 * java.lang.reflect.Field * getFields() 獲取所有public成員變量信息 * getDeclaredFields() 獲取該類自己的聲明的信息 * @param obj */ public static void printFieldMessage(Object obj) { Class c = obj.getClass(); //Field[] field = c.getFields(); Field[] fields = c.getDeclaredFields(); for (Field field : fields) { //得到成員變量的類型的類類型 Class fieldType = field.getType(); System.out.print("成員變量類型:"+fieldType.getName()); //得到成員變量名稱 String fieldName = field.getName(); System.out.print(" 成員變量名稱:"+fieldName); System.out.println(); } }查看全部
-
1,集合的泛型,是防止錯誤輸入的,只在編譯階段有效 可以用反射的方法繞過泛型,向集合中添加元素 List<String> list; list.add(100); m.invoke(list,100);查看全部
-
Important查看全部
-
...查看全部
-
方法的反射 1,方法的名稱和參數列表才能決定某個方法 2,方法的反射操作method.invoke(對象,參數列表) Class c = new Class(); c.print(); Method m = c.getMe......; m.invoke();查看全部
-
1,基本的數據類型,關鍵字都存在類類型。 例子:int.class String.class Double.class Class c = obj.getClass(); 方法也是對象: Method類:方法對象 Method[] ms = c.getMethods();//獲取所有public方法,包括父類繼承的方法 ms.getName();//方法的名稱 Class returnType = ms.getReturnType(); returnType.getName();//返回值類型 Class[] paramTypes = ms.getParameterTypes();//參數的類類型數組查看全部
舉報
0/150
提交
取消