我最近开始和Kotlin一起学习,并开始了一个使用Kotlin的Spring靴宠物项目。
我试图将一个自定义用户域对象集成到Spring Security中,因此希望实现UserDetails接口。
import org.springframework.data.annotation.Id as DocumentId
import org.springframework.data.mongodb.core.mapping.Document
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.authority.AuthorityUtils
import org.springframework.security.core.userdetails.UserDetails
@Document
data class User(@DocumentId val id: String? = null,
val username: String = "",
val password: String = "",
val email: String = "",
val name: String? = null,
val surname: String? = null) : UserDetails {
override fun isCredentialsNonExpired(): Boolean = true
override fun isAccountNonExpired(): Boolean = true
override fun isAccountNonLocked(): Boolean = true
override fun getAuthorities(): MutableCollection<out GrantedAuthority> = AuthorityUtils.createAuthorityList("USER")
override fun isEnabled(): Boolean = true
}
>
意外重写:以下声明具有相同的JVM签名(getUsername()ljava/lang/string;):public final fun
意外重写:以下声明具有相同的JVM签名(getPassword()ljava/lang/string;):public final fun
因为我的用户类已经有了一个方法getUsername():Kotlin.String,所以还要实现方法getUsername():Kotlin.String!?
除了在属性的getter和setter上使用@jvmname之外,我应该如何解决这样的错误呢?
这里的问题是,从Kotlin的观点来看,属性getter不可能从超类型重写函数。要解决此问题,您可以通过使属性private
并手动实现超类型中所需的方法来防止编译器生成getter,例如:
data class User(
private val username: String = ""
...
): UserDetails {
override fun getUsername() = username
...
}
我使用Jacoco进行单元测试代码覆盖。Jacoco生成的报告显示,在我的Kotlin代码中很少遗漏分支。我注意到,根据Jacoco的说法,协程代码和它之后的代码没有被适当地覆盖。我不确定这是因为协程还是其他原因。在用IntelliJ代码覆盖率运行我的单元测试时,我的Kotlin类显示了100%的覆盖率。 我不知道为什么Jacoco显示的覆盖率较低。我已经使用Spock(Groovy)编写了单元测
当我打开XAMPP并点击启动MySQL按钮,它给我一个错误。我刚刚开始,但现在它不起作用。 下午12:19:12[mysql]正在尝试启动mysql应用程序 12:19:12 PM[mysql]检测到状态更改:正在运行 12:19:13 PM[mysql]检测到状态更改:已停止 12:19:13 PM[mysql]错误:mysql意外关闭 12:19:13 PM[mysql]这可能是由于端口被阻止
我刚刚重新安装了XAMPP,当我尝试在XAMPP控制面板中启动Apache服务器时,现在出现以下错误: 我该怎么解决这个问题?
我在将应用程序从Java镜像到Kotlin时遇到了一些问题。我用java编写了这个类,效果很好: 在IntelijiIdea中自动转换后,它开始变成这样 但编译器告诉我 意外重写:以下声明具有相同的JVM签名(to boolean(Ljava/lang/String;)Z): fun toBoolean(p0: String?):在my . util . booleanutils fun to B
问题内容: 我目前正在练习使用Javascript / Dojo。但是,我有一个无法解决的错误: 未捕获的SyntaxError:意外令牌o 我已快速摘录了我的问题: 它专门针对以下方面: 我想知道为什么这是错误以及如何解决。 问题答案: 您正在尝试解析JavaScript对象。用于解析 表示 类似JavaScript的对象的JSON字符串。 只需完全跳过解析: 在相关说明中:您可能有兴趣阅读 “
问题内容: 我在交互式python会话中将其用作变量名而意外覆盖了-有什么方法可以使我能够访问原始功能,而无需重新启动会话? (在那次会议上我有很多东西,我宁愿不必这样做,尽管当然可以,如果需要的话。) 问题答案: 只需删除掩盖内建函数的名称即可: 您仍然可以始终通过 模块访问原始的内置模块(在Python 2上,带下划线和no );如果您想覆盖内置函数,但又想从覆盖中遵从原始格式,请使用此命令: