Android反射机制(一)

    xiaoxiao2021-03-25  195

    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()); }
    转载请注明原文地址: https://ju.6miu.com/read-4741.html

    最新回复(0)