在我的Android应用中,我将Kotlin与SugarORM结合使用,我遇到了一个问题,试图阻止某些属性被持久化。具有讽刺意味的是,在Kotlin类中使用时,@com.orm.dsl.Ignore
注释似乎被忽略了。
举个例子,
1)让我们宣布两个看似相同的模型:
// JavaUser.java
public class JavaUser extends SugarRecord {
public String login = "login";
@Ignore public String password = "password";
}
// KotlinUser.kt
class KotlinUser : SugarRecord() {
var login: String = "login"
@Ignore var password: String = "password"
}
2)坚持他们的实例
JavaUser().save()
KotlinUser().save()
3)并查看实际存在的内容:
sqlite> select * from java_user;
ID|LOGIN
1|login
sqlite> select * from kotlin_user;
ID|LOGIN|PASSWORD
1|login|password
我意识到它可能与Kotlin注释处理有关,但我不知道如何去做。任何建议都是最受欢迎的。
答案 0 :(得分:3)
Java和Kotlin代码之间的核心区别在于,在Java中使用字段,但在Kotlin中使用属性。请参阅文档中的Properties and Fields部分。
您可以尝试以下解决方案,看看SugarORM的效果最佳:
@Ignore @JvmField var password: String = "password"
@field:Ignore var password: String = "password"