• java反射总结


    Android HOOK或脱壳,很多地方都需要用到反射,JAVA的反射,意思就是,在运行过程中,每个类都能知道这个类的所有属性和方法,对于每个对象,都能任意的调用这个类的任意一个方法。

    这里在Android中进行测试和学习。

    1:获取类

    获取类可以有三种方法,Class.forname()、Class.getclass()、Class.class

     2:获取父类与接口:

    Class.getSuperclass()

    Class.getInterfaces()

     这里由于Activity中没有接口,所以没有获取到

     3:实例化类对象

    User类:

    public class User {
        private int age;
        private String name;
        public User() {
            super();
        }
        public User(String name) {
            super();
            this.name = name;
        }
        public User(int age, String name) {
            super();
            this.age = age;
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "User [age=" + age + ", name=" + name + "]";
        }

     

            try {
                clazz = Class.forName("com.example.viewtest.User");
                User u = (User) clazz.newInstance();
                u.setAge(20);
                u.setName("test");
                Log.d("User反射结果:", u.toString());
                Constructor[] cons = clazz.getConstructors();
                for (Constructor con : cons) {
                    Class[] clzs = con.getParameterTypes();
                    for (Class clz : clzs) {
                        Log.d("构造函数反射结果:", clz.getName());
                    }
                }
                u = (User) cons[1].newInstance(10,"test2");
                Log.d("构造函数启动实例反射结果", u.toString());
                u = (User) cons[2].newInstance("test1");
                Log.d("构造函数启动实例反射结果", u.toString());
            } catch (Exception e) {
                Log.d("反射结果错误", e.getMessage());
            }

    4:获取某个类中的全部属性

  • 相关阅读:
    PHP 连接oracle
    PHP 简易导出excel 类解决Excel 打开乱码
    Linux下Apache网站目录读写权限的设置
    PHP behavior 机制简单实现
    RewriteCond和13个mod_rewrite应用举例Apache伪静态
    PHP event 事件机制
    PHP 函数引用传值
    django数据库连接快速配置
    解决Django项目数据库无法迁移问题
    生成uuid唯一标识符
  • 原文地址:https://www.cnblogs.com/basstorm/p/12663256.html
Copyright © 2020-2023  润新知