Scala转换为通用列表无效类型

时间:2017-01-26 14:04:29

标签: scala generics casting

你们任何人都知道为什么以下编译:

def foo() =
    someObjectOfTypeFutureAny.asInstanceOf[Future[List[Bar]]]
foo()

虽然以下内容不是:

def foo[T]() =
    someObjectOfTypeFutureAny.asInstanceOf[Future[List[T]]]
foo[Bar]()

归结为错误'List [T]是生成的GraphQL类型Seq [Bar]的无效类型。

someObjectOfTypeFutureAny是我从Akka演员那里收到的问题(返回一个List [Bar])

我正在使用Sangria-Graphql

我构建了一个基本应用程序,使用泛型将列表转换为另一个列表,传递上述示例中的泛型函数,该函数有效。所以我不确定我的错误来自哪里。

我的实际代码:

def complexFieldResolver[Val, T](arguments: (Context[Unit, Val]) => List[String]): Field[Unit, Val] = {
    Field("solution",
        ListType(solutionEntityType),
        arguments = OptionalEntityIdArgument :: OptionalEntityIdsArgument :: Nil,
        resolve = ctx =>
            viewActor.ask(Query(NodeType.Solution, arguments(ctx))).asInstanceOf[Future[List[T]]]
    )
}

像这样调用:complexFieldResolver[ApplicationEntity, SolutionEntity]((context) => getArguments(context, "solutionentity", context.value.solution))

被调用的代码:

case NodeType.Solution =>
    graph.Vertex.findSolutionEntitiesByIds(ids).asInstanceOf[List[SolutionEntity]]


def findSolutionEntitiesByIds(entityIds: List[String]): List[models.SolutionEntity] =

0 个答案:

没有答案