java反射大全

做者對反射的理解:

        方法的調用(正常的調用:對象.方法()。反射調用方法:方法.對象())java

        靜態屬性的調用(正常的調用:類.屬性。反射調用:屬性.類)
android

常見反射的用法:

        1.經過反射獲取類

            Class<?> demo1 = Class.forName("java.util.Date");
spa

            Class<?> demo1_1 = java.util.Date.class;
code

            Class<?> demo1_2 = "java.util.Date" .getClass();orm

            Class<?> demo1_3 = new java.util.Date(10).getClass();對象

             Class<?> demo2 = Class.forName("android.media.MediaRecorder$OutputFormat"); //內部類get

        2.經過反射獲取方法(不包含不可見的方法,如私有方法)

            Method mtdGetDefault = demo1 .getMethod("Date");// 普通方法,後面「Date」表明方法名稱it

            Object obj = mtdGetDefault.invoke(demo1,參數1,參數2,參數3...);       class


      Constructor<?> cons = demo2.getConstructor(Integer.class,String.class,Object.class, ...);// 構造方法,括號裏面的是構造方法的參數stream

            Object obj1 = cons.newInstance(參數1,參數2,參數3...);


            Constructor<?> cons1[] = demo2.getConstructors();

            Object obj1_1 = cons1[0].newInstance();

            Object obj1_2 = cons1[0].newInstance(參數1,參數2,參數3...);

        3.經過反射獲取靜態屬性(非靜態屬性通常使用get方法來獲取)

            Field wave = demo2 .getField("WAVE"); 

            int mWava = (Integer) wave.get(demo2);

相關文章
相關標籤/搜索