Android反射机制(一)

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值