kotlin 我如何配置jOOQ代码生成器生成集< T>而不是数组< T>?

oxcyiej7  于 2022-11-30  发布在  Kotlin
关注(0)|答案(1)|浏览(130)

我正在使用一个数据库,其中的值存储在ARRAY列中,该列具有Java Set的语义,最重要的是,顺序无关紧要。
目前,jOOQ生成器为这些列生成Array<T>类型的POJO和记录。这是有问题的,因为如果两个数组的顺序不同,它们就不相等。
我试着创建一个自定义转换器,但是,很明显,将toType定义为Set<String>::class.java不会编译,因为类型擦除(?)

class ArrayToSetConverter() :
    AbstractConverter<Array<String>, Set<String>>(Array<String>::class.java, Set<String>::class.java) { ... }

编译错误:

Only classes are allowed on the left hand side of a class literal

有没有其他方法可以达到我的目标?
类似(不幸的是未回答)问题:jOOQ converter from String to List in Kotlin

rryofs0p

rryofs0p1#

使用类型擦除,我不认为你可以正式地在Java或Kotlin中创建Class<Set<String>>类型引用,但你不必这样做,只要这样做:

class ArrayToSetConverter() : AbstractConverter<Array<String>, Set<String>>(
  Array<String>::class.java, 
  Set::class.java as Class<Set<String>> // Unsafe cast here
) { ... }

相关问题