我正在与Room持久性库集成。我有一个静态编程语言的数据类:
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
)
@Entity
和@PrimaryKey
注释用于Room库。当我试图构建时,它失败了:
Error:Cannot find setter for field.
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
我还尝试提供默认构造函数:
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
) {
constructor() : this(0, "", 0, 0, 0, "", "", "")
}
但这并不奏效。需要注意的是,如果我将这个Kotlin类转换成一个带有getter和setter的Java类,它就会工作。感谢您的帮助!
room db库java代码生成中存在一个问题。
我使用可选字段isFavorite
。它给我同样的错误,然后我改变我的字段名为最喜欢的
然后编译。
之前var isFavorite: Int?=0,
后改变工作罚款var最喜欢的: Int?=0,
谢谢
嘿,我不知道是否每个人都知道或不,但你不能有列,这是从是
进入房间
。比如你不能有这样的
@Entity(tableName = "user")
data class User (
@PrimaryKey var id: Long? = null,
var userName: String = "",
var isConnectedToFB: Boolean = false,
)
由于字段标记为val
,因此它们实际上是最终字段,没有setter字段。
尝试用var切换val
。您可能还需要初始化字段。
@Entity(tableName = "story")
data class Story (
@PrimaryKey var id: Long? = null,
var by: String = "",
var descendants: Int = 0,
var score: Int = 0,
var time: Long = 0L,
var title: String = "",
var type: String = "",
var url: String = ""
)
编辑
上面的解决方案是对Kotlin中的这个错误的一个一般性修复,当将Kotlin与其他Java库(如Hibernate)一起使用时,我也看到了这一点。如果您想保持Room的不变性,请参阅其他一些答案,这些答案可能更适合您的情况。
在某些情况下,Java库的不可变性根本不起作用,当开发人员发出悲伤的噪音时,不幸的是,您必须将该val
切换为var
。
这个例子来自我正在学习的一门Kotlin课程: 如果我喜欢使用这样的主构造函数: 在这种情况下,我必须如何编写getter/setter?
我使用KOTLIN/SPRING BOOT(2.5.4)/MAVEN/MARIA DB我遇到了这样的错误,所以我想我必须找到make bean。但是我找不到我错过的东西。你能帮我吗...? 我的项目是Kotlin com。实例测试0831└ 控制器└ 用户控制器└ 实体└ 使用者└ 存储库└ 用户存储库└ 服务└ 用户服务└ UserServiceImpl 程序包com。实例test0831.co
我注意到Kotlin为var创建了setter,并通过setter设置值,而不是直接设置值。我们可以让setter内联吗?或者在默认情况下直接设置值而不创建私有setter方法?
当使用Java和JUnit 5时,我可以使用如下非静态字段注册扩展: 当我尝试使用Kotlin (1.4.10)时,我似乎无法让它工作。我试过举个例子: 但它失败了: 当我试着运行它的时候。 如果我尝试添加一个< code>@JvmField注释: 它失败,而是出现编译时错误: 我能做的是将它移动到一个同伴对象: 现在它可以工作了。但是我不能在伴随对象中声明,因为构造函数的输入()还不可用。我只是
本文向大家介绍go语言静态库的编译和使用方法,包括了go语言静态库的编译和使用方法的使用技巧和注意事项,需要的朋友参考一下 本文主要介绍go语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下: 在%GOPATH%\src目录,有demo包和使用demo包的应用程序main.go,main.go代码如下: demo包中的demo.go代码如下: 由于demo.
我有一个具有多个依赖项的Java项目,我想使用Kotlin DSL与Gradle一起打包到一个胖罐子中。 当我运行,构建成功,但当我尝试运行它时,它找不到主类: 以下是完整的文件: 以及我的回购协议的链接:https://github.com/darkasphalt/myapp