Java 根据bean字段名获取bean属性的名称

Posted wb54979

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 根据bean字段名获取bean属性的名称相关的知识,希望对你有一定的参考价值。

/**
     * 根据匿名函数,获取bean 属性名称 <br>
     * <li>BeanMapUtils.getBeanFunName(UserInfoDO::getCreateTime) = createTime</li>
     * <li>BeanMapUtils.getBeanFunName(UserInfoDO::isOk) =  ok</li>
     *
     * @date 2021-06-04 15:54
     */
    public static <T> String getBeanFunName(Property<T, ?> property) 
        try 
            Method declaredMethod = property.getClass().getDeclaredMethod("writeReplace");
            declaredMethod.setAccessible(Boolean.TRUE);
            SerializedLambda serializedLambda = (SerializedLambda) declaredMethod.invoke(property);
            String method = serializedLambda.getImplMethodName();

            String attr;
            if (method.startsWith("get")) 
                attr = (char) (method.charAt(3) + 32) + method.substring(4);
             else if (method.startsWith("is")) 
                attr = (char) (method.charAt(2) + 32) + method.substring(3);
             else 
                throw new IllegalStateException("无法处理的方法名" + method);
            
            return attr;
         catch (ReflectiveOperationException e) 
            throw new RuntimeException(e);
        
    

    public interface Property<T, R> extends Function<T, R>, Serializable 
    

以上是关于Java 根据bean字段名获取bean属性的名称的主要内容,如果未能解决你的问题,请参考以下文章

spring属性配置细节

mybatis基于注解的sql语句,bean的属性名和表的字段名不一样怎么办?

7.属性名与查询字段名不相同

XML配置里的Bean自动装配与Bean之间的关系

Spring入门第六课

利用Java反射实现两个具有相同属性bean赋值