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());
}