-
使用記事本編程: 命令行編譯查看全部
-
動態加載類: 靜態加載 動態加載查看全部
-
class類:查看全部
-
class類:查看全部
-
java-reflect:查看全部
-
反射的盛華操作 泛型 通過class,method了解泛型的本質 編譯之后集合的泛型是去泛型化的 java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯無效 驗證:通過方法的反射來操作,繞過編譯 method m = c1.getmethod("方法名",object.class); m.invoke(list1,100); //繞過編譯操作,繞過了泛型 system.out.println(list1.size());查看全部
-
方法的反射操作 獲取方法的名稱和方法的參數列表才能唯一決定某個方法 uppercase/tolowercase //將方法中所有的字符轉換成大寫的/轉換成小寫的 //要獲取一個方法就是要獲取類的信息,首先要獲取 class 對象.getclass(); 獲取方法名稱和參數列表getmethod獲取public的方法 getdeclaredmethod自己聲明的方法 method 對象 = c.getmethod("",new class[]{int.class,int.class}) 方法的反射操作是用m對象進行方法調用 方法如果沒有返回值返回null,有返回值返回具體返回值 object 0 = m.invoke(a1,new object[]{10,20}); //有幾個參數傳幾個參數或者傳數組查看全部
-
成員變量也是對象 java.lang.reflact.field field類封裝了關于成員變量的操作 getfield()方法獲取所有的public的成員變量信息 field[] fs = c.getfield(); field[] fs = c.getdeclarefield(); classutil.printfieldmessage();獲取打印信息 printconmessage(object obj) //打印對象的構造函數的信息 class c = obj.getclass(); 構造函數也是對象 java.lang.constructor中封裝了構造函數的信息 getconstructors獲取所有的public的構造函數 getdeclaredconstructors得到所有的構造函數 class[] paramtypes = constructor.getpatametertypes()查看全部
-
1.Foo.class 2.foo.getClass() 3.Class.forName(全名) 通過class獲取實例 class.newInstance()必須要有一個無參的構造方法查看全部
-
只要在類里面聲明的都有類類型 public static void pringClassMessage(Object object){ //要獲取類的信息,首先要獲取類的類型 Class c=object.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.println(returnType.getName()); //得到方法名 System.out.println(ms[i].getName()+"("); //獲取參數類型-->得到的是參數列表的類型的類類型 Class[] paramType=ms[i].getParameterTypes(); for (Class class1: paramType) { System.out.println(class1.getName()+","); } System.out.println(")"); } } }查看全部
-
Java反射機制——通過反射了解集合泛型的本質 1:反射的操作都是編譯之后的操作;就是運行階段 2:java中集合的泛型是防止錯誤輸入的;只在編譯階段有效,只要繞過編譯就無效啦 我們可以通過方法的反射來操作,繞過編譯查看全部
-
@Java反射機制——方法反射的基本操作 一、如何獲取某個方法:方法的【名稱】和【方法的參數列表】才能【唯一確定】某個方法 1、要獲取一個類的某個方法,需要先得到類類型 2、通過Class.getMethod(name,parameterTypes)獲得public的該方法:如c.getMethod("print",new Class[]{int.class,int.class})或者參數寫成int,int; ——> 來獲取 public void print(int a,int b) 3、同樣getDeclaredMethdo(name,paramterTypes)獲得自己聲明的該方法 二、方法的反射操作:method.invoke(對象,參數列表); 1、方法反射:通過調用方法的對象invoke(【對象】,參數列表),來操作定義該方法的【對象】,實現該方法 2、獲得方法的對象后,用對象method來進行方法調用Object o = method.invoke(c,new Object[]{10,20})也可以直接寫10,20。若方沒有返回值,則返回null。查看全部
-
Method類查看全部
-
Class類 靜態的成員、普通數據類型不是對象而是屬于類的 類是對象,類是java.lang.Class 類的實例對象(There is a class named Class) public class ClassDemo1 { public static void main(String[] args) { //Foo的實例對象表示方法 Foo foo=new Foo(); //Foo本身也是一個實例對象,是Class的實例對象,如何表示 //任何一個類都是Class類的實例對象,這個實例對象有三種表示方式 //第一種方式-->實際告訴我們任何一個類都有隱含的靜態成員變量class Class c1=Foo.class; //第二種表達方式 已知該類的對象通過getClass方法 Class c2=foo.getClass(); /*官網c1,c2表示了Foo類的類類型(class type)萬事萬物皆對象類也是對象,是Class類的實例對象 */ //不管c1還是c2都代表了Foo類的類類型,一個類只可能是Class類的實例對象 System.out.println(c1==c2);//true //第三種表達方式 Class c3=null; try { c3=Class.forName("Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c3==c2);//true //可以通過類的類類型創建該類的對象實例,通過c1 or c2 or c3 創建Foo的實例對象 try { Foo foo2=(Foo)c1.newInstance(); }catch (Exception e) { e.printStackTrace();}}} class Foo{}查看全部
-
方法的反射查看全部
舉報
0/150
提交
取消