Android反射机制(一)

来源:互联网 发布:黑泽朋世 知乎 编辑:程序博客网 时间:2024/06/05 05:57
try{1.首先要找到类名,就是你要反射函数所在的类(Android.telephony包下面的TelephonyManager类)                Class<?> managerClass = Class.forName("Android.telephony.TelephonyManager");                2.找到方法,用getMethod(...)注意里边的参数                Method methodDefault=  managerClass.getMethod("getDefault",new Class[] {int.class});                Object manager = methodDefault.invoke(managerClass,sub);                Method methodSend=  managerClass.getMethod("getSimState");                3.抛出反射invoke方法                int state = (Integer)methodSend.invoke(manager);                if(state== TelephonyManager.SIM_STATE_READY){                    return true;                }            }catch (Exception e){                e.printStackTrace();                return false;            }

获取类的三种方式

//获取类信息方式一:Object.getClass()        Class cP1 = p1.getClass();        Class cp2 = p2.getClass();        System.out.println(cP1==cp2);//同一块内存        //获取类信息方式二:类.class        Class cP3 = Person.class;        System.out.println(cP3==cP1);        //获取类信息的方式三:Class的forName("哪个类");--->类名(类全名:包名+类名)        //调用此方法会报:ClassNotFoundException异常        try {            Class cP4 = Class.forName("com.xdl.ref.Person");            System.out.println("cP1==cP4:"+(cP1==cP4));        } catch (ClassNotFoundException e) {            System.out.println("搞毛线啊,讨厌");//          e.printStackTrace();        }

获取类中方法的方式

Method [] methods = mYClass.getDeclaredMethods();            for (Method method : methods) {                System.out.println("方法的修饰符:"+Modifier.toString(method.getModifiers())+",方法名称:"+method.getName());            }

获取类中属性的方式

Field [] fields = mYClass.getDeclaredFields();            for (Field field : fields) {                System.out.println("属性的修饰符:"+Modifier.toString(field.getModifiers())+"属性名称:"+field.getName());            }
0 0
原创粉丝点击