zoukankan      html  css  js  c++  java
  • 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:获取某个类中的全部属性

  • 相关阅读:
    syslog(),closelog()与openlog()--日志操作函数 (1)
    C语言之strrchr函数
    HTTP 报文
    Apache Hive 建表操作的简单描述
    Apache Hive 简介及安装
    Hadoop之MapReduce(二)序列化,排序及分区
    Hadoop之MapReduce(一)简介及简单案例
    Hadoop之HDFS(三)HDFS的JAVA API操作
    Hadoop之HDFS(二)HDFS基本原理
    Hadoop之HDFS(一)HDFS入门及基本Shell命令操作
  • 原文地址:https://www.cnblogs.com/basstorm/p/12663256.html
Copyright © 2011-2022 走看看