【发布时间】:2013-07-17 03:52:17
【问题描述】:
我有一个 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 类型的值。
(这看起来很复杂,但它都可以编译,我认为这是有道理的。如果有帮助,我很乐意更改它。特别是,我怀疑,如果我可以消除使用路径相关类型,下面的问题不会。)
到目前为止,一切都很好。问题是当我从 Scala 代码中调用 Parser.Start 时,结果的类型为 <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
【问题讨论】:
-
试试
val dl : frontend.AST.DeclList = p.Start()