使用 Java 8 的 stream() 在 Play Framework 2.3 中给出子类化错误

Using Java 8's stream() gives subclassing error in Play Framework 2.3

在我的 Play Framework 2.3.7 Java 应用程序中,我编写了一个包含以下表达式的方法:

myList.stream().map(x -> x.myMethod()).collect(Collectors.toList());

这会产生以下错误:

Entity type class models.MyClass is not an enhanced entity bean.
Subclassing is not longer supported in Ebean

如果我用 Java 8 之前的版本替换表达式,它会完美运行:

List<SomeClass> myNewList = new ArrayList<SomeClass>();
for(AnotherClass x : myList)
    myNewList.add(x.myMethod());

这是怎么回事?

如果您在 models/persistence 中使用 EBean,我相信目前您无法在模型中使用任何 Java8 个功能(使用 Play 框架):

https://github.com/playframework/playframework/issues/1220

这样做最初可能是一种反模式,但您可以从模型中提取 Java 8 个特征并将它们放入某个实用程序 class 等中,然后您的代码应该可以正常工作。