Scala 获取未实现的方法时出错,即使我已经实现了它们

Scala 获取未实现的方法时出错,即使我已经实现了它们,scala,playframework-2.6,silhouette,Scala,Playframework 2.6,Silhouette,我在我的播放,剪影,卡桑德拉应用程序中遇到以下错误 class UsersRepository需要是抽象的,因为:它有6个未实现的成员。 /**从类UsersRepository中可以看出,缺少的签名如下。*为方便起见,它们可用作存根实现。*//在com.mohiva.play.screet.api.repositories.AuthInfoRepository中声明的成员 def add[T实际上,您并没有覆盖它们: def add[T <: AuthInfo]( loginInf

我在我的
播放
剪影
卡桑德拉
应用程序中遇到以下错误

class UsersRepository需要是抽象的,因为:它有6个未实现的成员。
/**从类UsersRepository中可以看出,缺少的签名如下。*为方便起见,它们可用作存根实现。*//在com.mohiva.play.screet.api.repositories.AuthInfoRepository中声明的成员

def add[T实际上,您并没有覆盖它们:

def add[T <: AuthInfo](
  loginInfo: LoginInfo,
  authInfo: T
): Future[T]
前者接受任何可能是
AuthInfo
实例的内容,后者则是一个非常特殊的情况,它正好是
PasswordInfo

当您将OOP混合到其中时,例如向上转换到父接口,专门化可能实际上并不明显,编译器将不得不使用泛型(未实现)方法


在这种情况下,更安全的做法是添加
覆盖
关键字,并确保您实际上覆盖了
实现。

请发布完整的代码,不要以代码格式发布错误谢谢。如果您的意思是我更改
定义添加(loginInfo:loginInfo,authInfo:PasswordInfo):Future[PasswordInfo]
to
override def add(loginInfo:loginInfo,authInfo:PasswordInfo):Future[PasswordInfo]
然后很遗憾,这没有起作用。另外,我在IDE中看到这样一条消息,即
method find不覆盖任何内容
,这正是我的意思:您需要将签名更改为
def add[T我认为您的答案是正确的,但我无法验证。
authinformepository
已经是一个特征。我正在
UsersRepository
类中实现该特征,我想专门为
PasswordInfo
实现它,因为
find
add
方法使用特定于
PasswordInfo>的字段
。但是我无法理解我是如何做到这一点的。由于新代码(您建议的代码)使用
T
而不是
PasswordInfo
,我再也不能使用特定于
PasswordInfo
的字段,因此会出现编译错误。我如何“在trait/类级别上移动[T],然后为特定的T实现此trait?”我接受你的回答,因为它回答了我没有正确地覆盖。我仍然面临的问题可能是一个设计问题,因此我打开了另一张票。你能看一看吗-
def add[T <: AuthInfo](
  loginInfo: LoginInfo,
  authInfo: T
): Future[T]
def add(
  loginInfo:LoginInfo,
  authInfo: PasswordInfo
):Future[PasswordInfo]