我试图在另一个名为“ DefaultFaqActionHandler”的类中调用“ DefaultFaqActionHandlerClass”。我已经尝试过使用extend,但是我对Scala不太熟悉,所以在执行该操作时遇到了问题。理想情况下,“ DefaultFaqActionHandlerClass”将是基类,然后将“ DefaultFaqActionHandler”作为派生类。请帮忙。
这是我尝试过的方法,但是会引发错误
class DefaultFaqActionHandler extends DefaultFaqActionHandlerClass with ActionTypeHandler {
val intentResponse: IntentResponse
val actionTypeRequest: ActionTypeRequest
implicit val clientPlatform: ClientPlatform
handleActionType(intentResponse, actionTypeRequest)(clientPlatform : ClientPlatform)
}
这是我想要继承的类。
class DefaultFaqActionHandlerClass extends ActionTypeHandler{
override def handleActionType(intentResponse: IntentResponse,
actionTypeRequest: ActionTypeRequest)(implicit clientPlatform: ClientPlatform): ActionTypeResponse = {
ActionTypeResponse(
responseData = FaqMessageTemplate.getFulfillmentMessage(
intentName = actionTypeRequest.intentName,
fulfillmentText = actionTypeRequest.intentFulfillmentText,
intentParameters = actionTypeRequest.intentParameters,
userToken = actionTypeRequest.userToken,
accessToken = actionTypeRequest.accessToken,
correlationId = Some(actionTypeRequest.correlationId)
),
conversationContext = intentResponse.conversationContext
)
}
我遇到错误...
错误:(11,8)类DefaultFaqActionHandler必须是抽象的,
答案 0 :(得分:2)
您的课程DefaultFaqActionHandler
引入了新的抽象成员:
val intentResponse: IntentResponse
val actionTypeRequest: ActionTypeRequest
implicit val clientPlatform: ClientPlatform
它需要为它们提供实现或声明为abstract class
或trait
。这些是Scala或Java中的规则-非抽象类中不能有抽象成员。抽象只是意味着您必须实现抽象成员才能创建它的实例。
对于您而言,这两个类是在相同文件中还是在不同文件中声明都没有关系。
如果这些抽象成员已经在ActionTypeHandler
或其他父类中实现,则不要将它们包含在您的类中或提供它们的完整实现。