gpt4 book ai didi

java - PlayFramework scala 模板泛型类型导致错误 : ']' expected but eof found. 并且错误:需要标识符但找到 $XMLSTART$<

转载 作者:行者123 更新时间:2023-11-30 08:49:09 25 4
gpt4 key购买 nike

我正在尝试向 scala templates 添加一些来自 java 的通用变量,但不幸的是到目前为止还没有成功。

不是 Scala 专家。我只是一名日常 Java 开发人员

我选择了 Play,因为它似乎是 Java 世界中一个简单的框架。现在我在使用这个 Scala 模板时遇到了问题。

我成立于 scala tutorial我必须添加 plus 字符来定义扩展。

这是我的代码:

实体类:

public class Insurance<T> {
// some code
}

列表声明(这里没有声明类型参数):

List<Entity> entities = new LinkedList<Entity>();

传递参数给 View 模板渲染方法:

return ok(views.html.Index.render(entities));

在 Scala View 层上:

@(entities: List[models.Entity[+T]])

但是我收到一个错误:

[error] /home/app/views/Index.scala.html:0: identifier expected but $XMLSTART$< found.
[error] /home/app/views/Index.scala.html:150: ']' expected but eof found.

当我删除泛型时它会起作用。

请帮忙。

最佳答案

模板其实就像一个方法,就像一个方法的参数列表(entities: List[models.Entity[+T]])不比 public Something myTemplate(entities: List[models.Entity[+T]]) 更有效, 没有任何地方可以将类型参数放入方法调用中,因此您必须提供具体类型而不是 T .

此外,在 Scala 中,类型参数的变体(+)没有在调用点指定,而是在声明中指定,因此即使您可以在方法中定义类型参数,它也不会有效签名。

你可以做的就是使用 models.Entity[Any] 说它可以是任何东西。或者可能只是你不关心使用 models.Entity[_] (基本上类似于 Java 中的 models.Entity<?>)。

附带说明一下,如果您可以使用完全未绑定(bind)的类型参数 T,您似乎应该多考虑一两次。那么这意味着您对模板内部的它一无所知,如果您对此一无所知,您会在模板中对它做什么?

希望这对您有所帮助!

关于java - PlayFramework scala 模板泛型类型导致错误 : ']' expected but eof found. 并且错误:需要标识符但找到 $XMLSTART$<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31582093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com