kotlin中的数字不可序列化

And*_*sky 5 serialization spring spring-data-jpa kotlin

我发现kotlin中的数字不可序列化.

  1. 第一个问题

Device.kt:

package test.domain

import javax.persistence.*

Entity public class Device {
    public Id GeneratedValue var id: Long = -1
    public var name: String = ""
    ...
}
Run Code Online (Sandbox Code Playgroud)

DeviceRestRepository.kt:

package test.domain

import org.springframework.data.repository.PagingAndSortingRepository
import org.springframework.data.repository.query.Param
import org.springframework.data.rest.core.annotation.RepositoryRestResource

RepositoryRestResource(collectionResourceRel = "device", path = "device")
public trait DeviceRestRepository : PagingAndSortingRepository<Device, Long?> {
    public fun findByName(Param("name") name: String): List<Device>
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译此代码时出错,因为kotlin.Long不是Serializable:

错误:(14,72)Kotlin:类型参数不在其范围内:应该是'java.io.Serializable?'的子类型

  1. 第二个问题

我尝试使用java.lang.Long时遇到同样的错误:

DeviceRestRepository.kt:

package test.domain

import org.springframework.data.repository.PagingAndSortingRepository
import org.springframework.data.repository.query.Param
import org.springframework.data.rest.core.annotation.RepositoryRestResource

RepositoryRestResource(collectionResourceRel = "device", path = "device")
public trait DeviceRestRepository : PagingAndSortingRepository<Device, java.lang.Long?> {
    public fun findByName(Param("name") name: String): List<Device>
}
Run Code Online (Sandbox Code Playgroud)

警告:(14,72)Kotlin:这个课不应该用在Kotlin中.请改用kotlin.Long.

错误:(14,72)Kotlin:类型参数不在其范围内:应该是'java.io.Serializable?'的子类型

Jay*_*ard 3

从 Kotlin 1.0 Beta 1 开始,基本类型是可序列化的:

Int 是可序列化的

现在 Int 类型和其他基本类型在 JVM 上都是可序列化的。这应该对许多框架有帮助。

来自: http: //blog.jetbrains.com/kotlin/2015/10/kotlin-1-0-beta-candidate-is-out/

因此,您不再有任何问题。