写了一个工具类,我也不知道有啥用


/**
 * 构建器类,用于构建对象或Map
 *
 * @description:
 * @create: 2023/6/13 11:28
 **/
public class Builder<T> {
    // 存储属性和值的映射关系
    private final Map<String, Object> map = new LinkedHashMap<>();

    // 目标类型
    private final Class<T> clazz;

    /**
     * 构造函数
     *
     * @param clazz 目标类型的Class对象
     */
    public Builder(Class<T> clazz) {
        this.clazz = Objects.requireNonNull(clazz, "clazz must not be null");
    }

    /**
     * 创建Builder实例
     *
     * @param clazz 目标类型的Class对象
     * @param    构建的目标类型
     * @return Builder实例
     */
    public static <T> Builder<T> of(Class<T> clazz) {
        return new Builder<>(clazz);
    }

    /**
     * 添加属性和值到映射关系中
     *
     * @param name  属性名称
     * @param value 属性值
     * @param    属性值的类型
     * @return 当前Builder实例
     */
    public <R> Builder<T> with(String name, R value) {
        map.put(Objects.requireNonNull(name, "name must not be null"), value);
        return this;
    }

    /**
     * 根据函数获取属性名称,并添加属性和值到映射关系中
     *
     * @param field 属性对应的函数
     * @param value 属性值
     * @param    属性值的类型
     * @return 当前Builder实例
     */
    public <R> Builder<T> with(SFunction<T, R> field, R value) {
        map.put(Objects.requireNonNull(LambdaUtils.getFieldName(field), "field must not be null"), value);
        return this;
    }

    /**
     * 构建一个目标类型的对象
     *
     * @return 目标类型的对象
     */
    public T buildToBean() {
        try {
            T instance = clazz.getDeclaredConstructor().newInstance();
            BeanUtils.populate(instance, map);
            return instance;
        } catch (InstantiationException | IllegalAccessException | InvocationTargetException |
                 NoSuchMethodException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 构建一个不可修改的map
     *
     * @return 不可修改的map
     */
    public Map<String, Object> buildToMap() {
        return Collections.unmodifiableMap(map);
    }
}

你可能感兴趣的:(java,servlet,android)