我有一个 Java 函数,它返回一个由 Scala 函数构建的对象。Java 函数如下所示
import frontEnd.Builder ;
import frontEnd.AST.DeclList ;
public class Parser {
Builder builder ;
public DeclList Start() {
DeclList result=builder.declList() ;
...
return result ; } }
其中AST
是一个特征,Builder
是一个扩展的类AST
并且DeclList
是一个特征。builder.declList
返回一个类型的值builder.DeclList
。
(这看起来很复杂,但都可以编译,我认为这是有道理的。如果有帮助,我很乐意更改它。特别是,我怀疑,如果我可以消除路径相关类型的使用,下面的问题会不是。)
到目前为止,一切都很好。问题是当我Parser.Start
从 Scala 代码调用时,结果具有类型<none>
或<notype>
取决于我选择相信的错误消息。这是调用 start 的 Scala 代码。
val p : Parser = new Parser( stream )
val builder = new frontEnd.Builder() ;
p.setBuilder( builder )
val dl : builder.DeclList = p.Start()
最后一行有一条错误消息
../src/tests/ParserTests.scala:19: error: type mismatch;
found : <notype>
required: builder.DeclList
val dl : builder.DeclList = p.Start()
^
one error found