All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.treeleafj.xmax.bean.BeanInfoUtils Maven / Gradle / Ivy

The newest version!
package org.treeleafj.xmax.bean;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * JavaBean信息操作
 *
 * @author leaf
 * @date 2014-3-20 下午10:00:44
 */
public abstract class BeanInfoUtils {

    /**
     * 判断一个方式是否private修饰的
     *
     * @param m
     * @return
     */
    public static boolean isPrivate(Method m) {
        return (m.getModifiers() & Modifier.PRIVATE) != 0;
    }

    /**
     * 判断一个方式是否protected修饰的
     *
     * @param m
     * @return
     */
    public static boolean isProtected(Method m) {
        return (m.getModifiers() & Modifier.PROTECTED) != 0;
    }

    /**
     * 判断一个方式是否public修饰的
     *
     * @param m
     * @return
     */
    public static boolean isPublic(Method m) {
        return (m.getModifiers() & Modifier.PUBLIC) != 0;
    }

    /**
     * 判断一个方式是否static修饰的
     *
     * @param m
     * @return
     */
    public static boolean isStatic(Method m) {
        return (m.getModifiers() & Modifier.STATIC) != 0;
    }

    /**
     * 判断一个方式是否abstract修饰的
     *
     * @param m
     * @return
     */
    public static boolean isAbstract(Method m) {
        return (m.getModifiers() & Modifier.ABSTRACT) != 0;
    }

    /**
     * 判断一个方式是否final修饰的
     *
     * @param m
     * @return
     */
    public static boolean isFinal(Method m) {
        return (m.getModifiers() & Modifier.FINAL) != 0;
    }

    /**
     * 判断一个方式是否synchronized修饰的
     *
     * @param m
     * @return
     */
    public static boolean isSynchronized(Method m) {
        return (m.getModifiers() & Modifier.SYNCHRONIZED) != 0;
    }

    /**
     * 判断一个方式是否set方法
     *
     * @param m
     * @return
     */
    public static boolean isSet(Method m) {
        return m.getName().startsWith("set") && isPublic(m) && !isStatic(m) && getParamLength(m) == 1;
    }

    /**
     * 判断一个方式是否get方法
     *
     * @param m
     * @return
     */
    public static boolean isGet(Method m) {
        if (isPublic(m) && !isStatic(m) && getParamLength(m) == 0 && !isReturnVoid(m)) {
            if (m.getReturnType() == boolean.class) {
                if (m.getName().startsWith("is")) {
                    return true;
                }
            }
            return m.getName().startsWith("get");
        }
        return false;
    }

    /**
     * 获得一个方式的入参个数
     *
     * @param m
     * @return
     */
    public static int getParamLength(Method m) {
        return m.getParameterTypes().length;
    }

    /**
     * 判断一个方法的返回值是否void
     *
     * @param m
     * @return
     */
    public static boolean isReturnVoid(Method m) {
        return (m.getReturnType() == void.class);
    }

    /**
     * 通过set方法得到对应的属性的名字
     *
     * @param m
     * @return
     */
    public static String getPropertiesNameBySet(Method m) {
        String name = m.getName().substring(3);
        return name.substring(0, 1).toLowerCase() + name.substring(1);
    }

    /**
     * 通过get方法得到对应的属性的名字
     *
     * @param m
     * @return
     */
    public static String getPropertiesNameByGet(Method m) {
        String name;
        if (m.getReturnType() == boolean.class && m.getName().startsWith("is")) {
            name = m.getName().substring(2);
        } else {
            name = m.getName().substring(3);
        }
        return name.substring(0, 1).toLowerCase() + name.substring(1);
    }

    /**
     * 通过get方法得到对应的属性的类型
     *
     * @param m
     * @return
     */
    public static Class getPropertiesTypeByGet(Method m) {
        return m.getReturnType();
    }

    /**
     * 通过set方法得到对应的属性的类型
     *
     * @param m
     * @return
     */
    public static Class getPropertiesTypeBySet(Method m) {
        return m.getParameterTypes()[0];
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy