kotlin:注释中数组的一些问题

Posted

技术标签:

【中文标题】kotlin:注释中数组的一些问题【英文标题】:kotlin: some problems with arrays in annotations 【发布时间】:2014-10-06 05:59:57 【问题描述】:

我在注释中遇到了一些问题:

Entity Table(uniqueConstraints = array(UniqueConstraint(columnNames = array("key", "userid")))) 
public class ...

在这种情况下,我收到以下错误:

类型推断失败。预期类型不匹配:发现: 需要 kotlin.Array:kotlin.String

uniqueConstraints = array(...) 没有问题,但 Idea 在 columnNames = array(...)

中显示错误

我使用 hibernate-jpa-2.1-api-1.0.0.Final.jar


解决方法:我使用复合键 (@javax.persistence.IdClass) 代替 uniqueConstraints

【问题讨论】:

【参考方案1】:

这对我有用:

@Table(uniqueConstraints = arrayOf(
        UniqueConstraint(columnNames = arrayOf("key", "key"))
))

对于新版本的 kotlin,您也可以这样做:

@Table(uniqueConstraints = [
    UniqueConstraint(columnNames = ["key", "key"])
])

【讨论】:

3 年前。 Kotlin 在 Milestone 中,有时新版本会破坏现有代码 @Alykoff Gali,关于最新版本,是的,你是绝对正确的【参考方案2】:

使用spread operator:

UniqueConstraint(columnNames = *array("key", "userid"))

【讨论】:

【参考方案3】:

今天我自己也在为此苦苦挣扎。以下 sn-p 适用于最新版本的 Kotlin:

@ApiResponses(value = *arrayOf(
        ApiResponse(code = 403, message = "Unauthorized"),
        ApiResponse(code = 404, message = "Item not found")))

或更短的选项:

@ApiResponses(
    ApiResponse(code = 403, message = "Unauthorized"),
    ApiResponse(code = 404, message = "No active snapshots"))

如果带有数组的注解定义为:

public @interface ApiResponses 
    ApiResponse[] value();

【讨论】:

以上是关于kotlin:注释中数组的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin自定义注释,参数

kotlin入门(3)-数组

Kotlin - 在索引范围内的 IntArray 中查找最小值

如何将字符串转换为数组,用逗号标记android kotlin [重复]

Swift vs Kotlin 在排序数组上的表现

如何使用Kotlin从Firestore中的数组字段中获取数据?