java - 在 Orika 中定义映射时真的可以使用泛型吗?

标签 java orika

我知道那种类型删除,并且会在定义映射时阻止使用泛型,因为这个问题指出了 how to map generics objects with Orika? .但是Orika FAQ ,在 Are generics supported 部分,声明:

Yes. Orika includes special runtime support for the mapping of generic types via a special Type class which can be used to define the exact type elements of a templated type.

理想情况下像下面这样的东西应该可以工作(假设我们可以通过一些 Orika 功能以某种方式在运行时维护类参数):

     mapperFactory.classMap(Asset<T,K>.class, AssetDto<K>.class)
    .maybeSomeCustomization...
    .byDefault()
    .register();

我找不到关于 Type<?> 的任何示例Orika FAQ 提到的类用法。

最佳答案

有可能,您需要使用 MapperFactory#classMap(Type<A>, Type<B>) API 而不是 MapperFactory#classMap(Class<A>, Class<B>) .

您可以在 generics 中找到 Orika 测试中的大量示例包。

构造一个Type例如,您可以使用 TypeBuilder 的就地匿名子类:

Type<MyGenericClass<GenericParam1, GenericParam2>> type =
    new TypeBuilder<MyGenericClass<GenericParam1, GenericParam2>>() {}.build();

注意括号 {}在创建匿名子类的构造函数之后。这样 Orika 就可以找到实际的 MyGenericClass<GenericParam1, GenericParam2>使用 ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments() 输入参数.

关于java - 在 Orika 中定义映射时真的可以使用泛型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35460113/

相关文章:

java - 我不确定如何修复此代码。第一部分是一个循环(需要是第一部分),我不知道如何关闭它

java - 自 API 28 起无法写入文件

java - Android 应用程序在设备上加载白屏

java - 有没有办法将 Java 方法标记(例如注释)为永不返回?

java - 如何从 JNDI 变量初始化 web.xml 中的值?

java - Orika vs JMapper - 它是如何工作的以及速度差异 - 为什么?

java - Orika - 将 Page<T> 映射到 Page<TDto>

java - Orika 是否支持来自 java.util.Set 的映射?

java - Orika 映射器 NPE 位于 2 个 map 之间