我遵循Lorenzo的“用Xtext和X趋向实现特定领域的语言”一书,在第6章的某个时候,我被要求使用Xtext提供的API,其中提到了使用Google的依赖注入。
服务代码已实现
class EntitiesOutputConfigurationProvider extends OutputConfigurationProvider {
public val ENTITIES_GEN = "./entities-gen"
override getOutputConfigurations() {
super.getOutputConfigurations() => [
head.outputDirectory = ENTITIES_GEN
]
}
}绑定的代码是:
public class EntitiesRuntimeModule extends AbstractEntitiesRuntimeModule {
public Class<? extends IOutputConfigurationProvider>
bindIOutputConfigurationProvider() {
return EntitiesOutputConfigurationProvider. class;
}
}然后我得到了下面的错误
AbstractEntitiesRuntimeModule
错误:
不匹配的输入“{”期望“=>”
根据本书和Xtext文档,代码是正确的。有人知道吗?
P.S.:我的Xtext版本是2.9
发布于 2016-05-07 19:09:37
您在X差普类中使用Java语法。为了在X趋向中定义一个新方法,您必须始终使用def关键字。
产生特定错误消息的原因是X趋向支持函数类型的缩写。例如,()=>String是不接受参数并返回字符串的函数的类型,是Function0<? extends String>的缩写。
在X趋向中,public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider是一个完整的字段定义(而不是方法定义),X趋向解析器认为您正在尝试启动具有函数类型的第二个字段定义,但没有完全指定该类型。在函数类型中,()之后的下一件事情总是必须是=>,所以解析器会抱怨它找到了一个{。
https://stackoverflow.com/questions/35783813
复制相似问题