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 - 在索引范围内的 IntArray 中查找最小值