白季飞龙的个人主页

Java对象工具类

在Java开发中,处理对象的时候,经常会发现一些自己感觉很基础的功能,JDK不提供,第三方也找不到实现,只能自己开发。

对象转字典

Java代码

package bj; 
import io.vavr.control.Try;

import java.awt.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;
import java.util.List;
import java.util.function.Function;

/**
 * Created by BaiJiFeiLong@gmail.com at 2018/11/1 下午4:03
 */
public class MyBeanUtils {

    public static Map<String, Object> objectToMap(Object object) {
        List<Field> fields = new ArrayList<>();
        Class clazz = object.getClass();
        while (clazz != null) {
            fields.addAll(Arrays.asList(clazz.getDeclaredFields()));
            clazz = clazz.getSuperclass();
        }

        return fields.stream()
                .peek($ -> $.setAccessible(true))
                .filter($ -> !$.isSynthetic())
                .filter($ -> !Modifier.isStatic($.getModifiers()))
                .collect(HashMap::new, (stringObjectHashMap, field) -> stringObjectHashMap.put(field.getName(), Try.of(() -> field.get(object)).getOrElseThrow((Function<Throwable, RuntimeException>) RuntimeException::new)), HashMap::putAll);
    }

    public static void main(String[] args) {
        System.out.println(objectToMap(new Color(22, 144, 100) {{
        }}));
    }
}

控制台输出

{falpha=0.0, cs=null, fvalue=null, frgbvalue=null, value=-15298460}

文章首发: https://baijifeilong.github.io


漫漫路,莫论逍遥;潜心修,只为悟道