Java反射类

Java反射工具类

1.反射静态方法
2.反射成员方法
3.反射成员get/set
4.反射静态成员get/set

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 反射工具类
 * @author zhuxiaoxin
 */
public class RefInvoke {

    public static Object invokeStaticMethod(String class_name, String method_name, Class[] paramsType, Object[] params) {
        try {
            Class clazz = Class.forName(class_name);
            Method method = clazz.getMethod(method_name, paramsType);
            method.setAccessible(true);
            return method.invoke(null,params);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Object invokeMethod(String class_name, String method_name, Object obj, Class[] paramsType, Object[] params) {
        try {
            Class clazz = Class.forName(class_name);
            Method method = clazz.getMethod(method_name, paramsType);
            method.setAccessible(true);
            return method.invoke(obj, params);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Object getStaticFieldObject(String class_name, String field_name) {
        try {
            Class clazz = Class.forName(class_name);
            Field field = clazz.getField(field_name);
            field.setAccessible(true);
            return field.get(null);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Object getFieldObject(String class_name, String field_name, Object obj) {
        try {
            Class clazz = Class.forName(class_name);
            Field field = clazz.getField(field_name);
            field.setAccessible(true);
            return field.get(obj);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void setStaticFieldObject(String class_name, String field_name, Object value) {
        try {
            Class clazz = Class.forName(class_name);
            Field field = clazz.getField(field_name);
            field.setAccessible(true);
            field.set(null, value);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    public static void setFieldObject(String class_name, String field_name, Object obj, Object value) {
        try {
            Class clazz = Class.forName(class_name);
            Field field = clazz.getField(field_name);
            field.setAccessible(true);
            field.set(obj, value);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

}

你可能感兴趣的:(android学习,android插件化)