美文网首页
Android-反射使用

Android-反射使用

作者: cao苗子 | 来源:发表于2019-10-09 11:10 被阅读0次
     //反射获取对象
    //        TestBean testBean = new TestBean();
            try {
                //只有一个构造函数 并且是空参
    //            TestBean testBean = TestBean.class.newInstance();
    //            Log.d("TAG-->", testBean.getName());
    
                //getDeclaredConstructor 获取所有的构造方法 getConstructor 这个是获取公共构造方法
                //多个构造函数 空参
                Constructor<TestBean> declaredConstructor1 = TestBean.class.getDeclaredConstructor();
                //设置成公共方法
                declaredConstructor1.setAccessible(true);
                //获取对象
                TestBean testBean1 = declaredConstructor1.newInstance();
    
                //多个构造函数 有一个参
                Constructor<TestBean> declaredConstructor2 = TestBean.class.getDeclaredConstructor(String.class);
                //设置成公共方法
                declaredConstructor2.setAccessible(true);
                //获取对象
                TestBean testBean2 = declaredConstructor2.newInstance("我是苗子");
    
                //带多个参数
                Constructor<TestBean> declaredConstructor3 = TestBean.class.getDeclaredConstructor(String.class,int.class);
                //设置成公共方法
                declaredConstructor3.setAccessible(true);
                //获取对象
                TestBean testBean3 = declaredConstructor3.newInstance("wo shi miaozi",234);
    
                //获取方法
                //空参
                Method setName = TestBean.class.getDeclaredMethod("setName");
                //设置成公共方法
                setName.setAccessible(true);
                //执行
                setName.invoke(testBean2);
    
                //有参
                Method setName2 = TestBean.class.getDeclaredMethod("setName",String.class);
                //设置成公共方法
                setName2.setAccessible(true);
                //执行
                setName2.invoke(testBean2,"cao ni ma miao zi");
    
                //属性获取
                Field field = TestBean.class.getDeclaredField("name");
                field.setAccessible(true);
                String  name = (String) field.get(testBean2);
    
                Log.d("TAG","name = "+name);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    

    相关文章

      网友评论

          本文标题:Android-反射使用

          本文链接:https://www.haomeiwen.com/subject/liiwpctx.html