29、Xbase高级特性与应用实践

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值