`

Reflect反射的工具类

    博客分类:
  • J2SE
 
阅读更多

Reflect反射的工具类

自己写了一个工具类,希望对大家有用。

/**
 * 
 */
package com;

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

/**
 * @version 1.0.0
 * @since 2010.1.25
 * @author cnchenhl
 * 
 */

public class JavaReflectUtil {
    /**
     * get Class Of Name
     * @param str
     * @return
     * @throws ClassNotFoundException
     */
    public static Class<?> getReflectClass(String str) throws ClassNotFoundException {
        Class<?> classReflect = null;
        classReflect = Class.forName(str);
        return classReflect;
    }
    /**
     * get Method of className
     * @param str
     * @return
     * @throws SecurityException
     * @throws ClassNotFoundException
     */
    public static Method[] getDeclaredMethod(String str) throws SecurityException, ClassNotFoundException {
        Method[] method = getReflectClass(str).getDeclaredMethods();
        return method;
    }
    /**
     * 
     * @param method
     */
    public static void printMehthodArray(Method[] method) {
        for (int i = 0; i < method.length; i++) {
            System.out.println(method[i].toString());
        }
    }
    /**
     * 
     * @param str
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Constructor<?> getConsructorDefault(String str) throws SecurityException, NoSuchMethodException,
            ClassNotFoundException {
        Constructor<?> constructor = null;

        constructor = getReflectClass(str).getConstructor();

        return constructor;

    }
    /**
     * 
     * @param str
     * @param classType
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Constructor<?> getConstructor(String str, Class<?>[] classType) throws SecurityException,
            NoSuchMethodException, ClassNotFoundException {
        Constructor<?> constructor = null;
        constructor = getReflectClass(str).getConstructor(classType);
        return constructor;
    }
    /**
     * 
     * @param str
     * @return
     * @throws IllegalArgumentException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Object getClassObject(String str) throws IllegalArgumentException, InstantiationException,
            IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException,
            ClassNotFoundException {
        Object obj = null;
        obj = getConsructorDefault(str).newInstance();

        return obj;
    }
    /**
     * 
     * @param str
     * @return
     * @throws SecurityException
     * @throws ClassNotFoundException
     */
    public static Field[] getClassField(String str) throws SecurityException, ClassNotFoundException {
        Field[] field = null;
        field = getReflectClass(str).getDeclaredFields();
        return field;
    }
    /**
     * 
     * @param field
     */
    public static void printFieldArray(Field[] field) {
        for (int i = 0; i < field.length; i++) {
            System.out.println(field[i]);
        }
    }
    /**
     * 
     * @param method
     * @return
     */
    public static String getMehtodName(Method method) {
        String str = method.getName();
        return str;
    }
    /**
     * 
     * @param field
     * @return
     */
    public static String getFieldName(Field field) {
        String str = field.getName();
        return str;
    }
    /**
     * 
     * @param field
     * @param typeofMethod
     * @return
     */
    public static String getFieldOfGetMethod(Field field, String typeofMethod) {
        String fieldName = field.getName();
        String firstLetter = fieldName.substring(0, 1).toUpperCase();
        String getMethodName = typeofMethod + firstLetter + fieldName.substring(1);
        return getMethodName;
    }
    /**
     * 
     * @param str
     * @param methidName
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Method getMethod(String str, String methidName) throws SecurityException, NoSuchMethodException,
            ClassNotFoundException {
        Method method = getReflectClass(str).getMethod(methidName);
        return method;
    }
    /**
     * 
     * @param field
     * @param str
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Method getFieldOfMethod(Field field, String str) throws SecurityException, NoSuchMethodException,
            ClassNotFoundException {
        String getMethodName = getFieldOfGetMethod(field, "get");
        Class<?> classType = getReflectClass(str);
        Method getMethod = classType.getMethod(getMethodName, new Class[] {});
        return getMethod;
    }
    /**
     * 
     * @param field
     * @param str
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws ClassNotFoundException
     */
    public static Method setFieldOfMethod(Field field, String str) throws SecurityException, NoSuchMethodException,
            ClassNotFoundException {
        String setMethodName = getFieldOfGetMethod(field, "set");
        Class<?> classType = getReflectClass(str);
        Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() });
        return setMethod;

    }
    /**
     * 
     * @param field
     * @param str
     * @return
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     * @throws ClassNotFoundException
     */
    public static Object invokeGetMethod(Field field, String str) throws SecurityException, NoSuchMethodException,
            IllegalArgumentException, IllegalAccessException, InvocationTargetException, ClassNotFoundException {
        Method method = getFieldOfMethod(field, str);
        Object value = method.invoke(new Object[] {});
        return value;
    }
    /**
     * 
     * @param field
     * @param str
     * @param value
     * @throws SecurityException
     * @throws NoSuchMethodException
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     * @throws ClassNotFoundException
     */
    public static void invokeSetMehtod(Field field, String str, Object value) throws SecurityException, NoSuchMethodException,
            IllegalArgumentException, IllegalAccessException, InvocationTargetException, ClassNotFoundException {
        Method method = setFieldOfMethod(field, str);
        method.invoke(new Object[] { value });

    }

}

 

 

 

0
8
分享到:
评论

相关推荐

    java常用工具类 Reflect反射工具类、String字符串工具类

    Java常用工具类是Java开发中经常使用的工具类,包括Reflect反射工具类和String字符串工具类。这些工具类提供了许多实用的方法,能够帮助开发者快速实现各种功能。 Reflect反射工具类 Reflect反射工具类是Java反射...

    Java反射调用工具类

    这个“Java反射调用工具类”可能是为了简化和封装这些复杂的反射操作而创建的一个实用工具类。 首先,`JobProxy.java`可能是一个代理类,它利用反射来动态地调用目标对象的方法。在Java中,代理模式通常用于在不...

    Java反射工具类

    Java反射工具类主要指的是`java.lang.reflect`包中的类,它们提供了对类、接口、字段和方法的动态访问能力。这篇博文通过链接可能详细解释了如何利用这些工具类来实现一些高级功能。 1. `Class&lt;?&gt;`: 这是反射的核心...

    移植Xposed的反射工具类

    Xposed框架的核心是其提供的API,其中`XposedHelper`是一个关键的反射工具类,方便开发者对Android系统的类和方法进行操作。本文将详细介绍如何将`XposedHelper`移植到非Xposed环境中,以及在Java反射技术方面的一些...

    基于Java字节码技术的高性能hp-reflect反射工具设计源码

    hp-reflect 是一款基于Java字节码技术的高效反射工具,其设计源码包含31个文件,其中Java源文件21个,辅助文件包括备份文件、Git忽略规则、许可证、文档、XML配置等。该工具通过动态生成access class,实现高效的...

    Java中的reflect 反射的基本东西,

    Java中的反射机制是Java语言提供的一种强大的工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。反射在许多高级编程任务中扮演着关键角色,比如动态加载类、创建对象、访问私有成员、调用...

    java中的反射reflect

    Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类、接口、字段和方法的信息,甚至能够在运行时动态地创建对象和调用方法。反射在很多场景下都发挥着关键作用,比如在框架开发、插件系统、序列化...

    cpp-reflect在C17中轻松实现反射和序列化

    例如,可以使用`std::integral_constant`或`std::function`等工具来创建表示类型的类,并使用宏定义来简化类型信息的注册过程。同时,为了实现序列化,可以设计一套接口,让每个可序列化的类实现该接口,以便在运行...

    50个左右的JAVA工具类,相对比较全

    7. **反射工具类**:如Java的java.lang.reflect包,或Google的Reflections库,用于运行时检查和操作类、接口、字段和方法。 8. **编码解码工具类**:如Base64编码解码,可以在Java 8的java.util.Base64中找到,或者...

    利用反射子父类赋值高效工具类案例extends_setvalue.zip

    反射工具类可以智能地识别这些字段,并正确地将其值设置到子类对象中。这样,无论父类有多少字段,或者子类如何扩展,都能统一处理,避免了为每个类编写单独的赋值逻辑。 在“extends_setvalue”这个案例中,可能...

    java反射(reflect)

    Java反射(Reflect)是Java语言中的一个重要特性,它允许运行时的Java程序访问、操作类、接口、字段和方法的信息,甚至动态调用方法。在Java编程中,反射提供了强大的能力,可以用来实现一些高级功能,如元编程、...

    java工具类

    7. **反射工具类**: - `java.lang.reflect` 包:提供反射API,可以在运行时动态访问类、接口、构造器和方法。 8. **类型转换工具类**: - `java.util.Comparator`:用于比较对象,常用于集合排序。 - `java....

    xcr常用的工具类

    10. **反射工具类**:如Java的`java.lang.reflect`包,允许程序在运行时检查和修改对象的行为。 在实际项目中,根据需求可能会有更多定制化的工具类,如数据库操作工具类、图片处理工具类等。合理利用这些工具类,...

    java常用工具类

    9. **反射工具类**: - `java.lang.reflect`包:包含`Class`, `Field`, `Method`, `Constructor`等类,用于运行时检查和操作类、接口、字段和方法。 10. **并发工具类**: - `java.util.concurrent`包:提供了...

    java各种常用的工具类封装 源码

    `java.lang.reflect` 包提供了`Class`、`Field`、`Method` 等类,`ClassUtil` 或类似的工具类可以封装这些反射操作,如创建对象、调用私有方法、修改私有属性等。 5. **Json**: JSON (JavaScript Object Notation) ...

    java常用的工具类实现

    7. **Reflection**: `java.lang.reflect` 包提供了反射机制,允许在运行时检查类、接口、字段和方法的信息,以及动态调用方法、创建对象等。 8. **File**: `java.io.File` 类用于文件和目录的操作,如读写、创建、...

    常用的java工具类

    Java语言在长期的发展过程中,积累了丰富的工具类库,这些工具类极大地提高了开发效率,使得开发者可以更加专注于业务逻辑,而非底层实现。本篇文章将详细解析Java中常用的工具类,包括字符处理、文件处理、时间操作...

    java的类反射

    综上所述,Java的类反射是一个强大且灵活的工具,为开发者提供了许多在编译时无法实现的功能。但同时,也需要注意其潜在的性能和安全问题。理解并合理运用反射,是提升Java编程能力的重要一环。

Global site tag (gtag.js) - Google Analytics