gpt4 book ai didi

在两种类型之间进行转换的 Java 通用实用方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:26 26 4
gpt4 key购买 nike

我有一个方法可以在两个不同类的对象之间进行转换。这些是 DTO 对象和 hibernate 实体类。

public static DomainObject1 convertToDomain(PersistedObject1 pObj) {
if (pObj == null)
return null;
DomainObject1 dObj = new DomainObject1();
BeanUtils.copyProperties(pObj,dObj); //Copy the property values of the given source bean into the target bean.
return dObj;
}

而不是使用与 DomainObject2PersistedObject2 等相同的方法。是否可以使用具有以下签名的通用方法? (无需传递源类和目标类)

 public static<U,V> U convertToDomain(V pObj) {
...}

PS:(一个 different 主题,当实体具有相同的结构时使用 DTO 是一种浪费,尽管有 hibernate 文档和其他来源,但有些人不同意)

最佳答案

要实现此目的,您需要传递要查找的域对象的类。像下面这样的东西会起作用:

public static <T> T convert(Object source, Class<T> targetType)
throws InstantiationException,
IllegalAccessException,
InvocationTargetException {
if (source == null)
return null;
T target = targetType.newInstance();
BeanUtils.copyProperties(source, target);
return target;
}

话虽这么说,但看起来您已经在使用 Spring。您可以尝试使用 Spring 的 ConversionService(自动线路转换服务)注册一个特殊的转换器,您可以使用 convert 方法来获得相同的结果。

请注意,您应该添加一些检查以确保每个实体和域对象都兼容,否则您最终会搞得一团糟,并且您的代码很容易出错。

关于在两种类型之间进行转换的 Java 通用实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com