我正在尝试使用Xtend Xbase API生成一个简单的Java方法。这是Xtend代码。
var jvmMethod = element.toMethod("fromSap",element.newTypeRef(element.dtoFullName))[
var jvmTypeReference= fromSap.sapType;
var param = toParameter("sapOb",jvmTypeReference)
parameters+=param
body = ['''....''')]以下是生成的代码:
public class DTOTest {
public DTOTest fromSap(final String sapOb) {
DTOTest result = new DTOTest();
return result;
}
}我试着补充说:
param.setFinal(false);但我有
This expression is not allowed in this context, since it doesn't cause any side effects.在编译时
戴维德
发布于 2013-01-18 20:06:35
在方法中包含的表达式的链接/范围中,方法参数被认为是最终的。如果参数不是final,那么它们都不能在lambda表达式中使用。不幸的是,对于参数,在反射API (java.lang.reflect)中没有‘最终’的方法。因此,不能公开任何属性'isFinal‘,但我们只需在内部将它们标记为此类。
错误消息‘此表达式在此上下文中是不允许的,因为它不会引起任何副作用。’是有误导性的。它可能掩盖了真正的错误,即没有这样的方法JvmFormalParameter.setFinal(boolean)。
https://stackoverflow.com/questions/14395395
复制相似问题