我使用常量定义了特征RequireLogin
:
trait RequireLogin {
val message = "you should login"
if(sessionUser.isEmpty) {
Global.error(message)
throw new RedirectException("/login", message);
}
}
现在在我的测试中,我创建了一个具有此特征的对象,并测试Global.error()
是否等于RequireLogin.message
。
try {
new Object with RequireLogin
} catch {
case _: RedirectException =>
}
Global.error should be === RequireLogin.message // !!! can't be compiled
但它无法编译。
有没有办法从特质中获得常数?或者如何重构我的代码以使其更好?
答案 0 :(得分:4)
我们想到的是定义一个包含常量的伴随对象:
object RequireLogin {
val message = "you should login"
}
不确定这是否是您正在寻找的,但我认为如果不使用反射,您将无法从特征中获取价值。