Xbase高级特性与应用实践
1. 编译器中使用Xbase类型系统
在编译器里,Xbase类型系统可依据被编译表达式的类型来生成Java代码。例如,在特定领域语言(DSL)中,当 eval 参数表达式为字符串表达式时,可避免生成与空字符串的显式字符串连接。
操作步骤如下:
1. 注入 IBatchTypeResolver 。
2. 调用 resolveTypes 触发类型解析。
3. 调用 getActualType 获取实际类型。
仅当 eval 参数表达式的实际类型不是字符串时,才生成与空字符串的显式字符串连接,示例代码如下:
@Inject IBatchTypeResolver batchTypeResolver
override protected doInternalToJavaStatement(XExpression obj,
ITreeAppendable a, boolean isReferenced) {
...
if (isReferenced) {
val e = obj.expression
val name = a.declareSyntheticVariable(obj, "_eval")
a.append('''String «name» = ''')
e.generateStringConversion
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



