我知道那种类型删除,并且会在定义映射时阻止使用泛型,因为这个问题指出了 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/