我正在使用CodeModel在我的项目中创建toString语句的插件。
生成的代码应如下所示:
if (variable == null) {
out.append(" " + "variable = null").append("\n");
}
(在上面的代码中是一个简单的StringBuilder)
我想使用CodeModel在if语句中自动生成新行和制表符,并且到目前为止已达到此输出:
if ("variable" == null) {
out.append(" " + "variable = null").append("\n");
}
问题是变量周围的引号,我为变量值指定了一个JExpression文字值。目前的实施如下:
private void printComplexObject(final JMethod toStringMethod, FieldOutline fo) {
String property = fo.getPropertyInfo().getName(false);
property = property.replace("\"", "");
JType type = fo.getRawType();
JBlock block = toStringMethod.body();
JConditional nullCheck = block._if(JExpr.lit(property).eq(JExpr._null())); ...}
是否有人知道如何使用JExpression或CodeModel中的任何其他内容来完成此操作?到目前为止,唯一的替代方法是使用directStatement进行如下操作:
toStringMethod.body().directStatement("if (" + property + " == null) { out.append ...}");
答案 0 :(得分:0)
解决方案是使用以下内容替换JConditional nullCheck:
JConditional nullCheck = block._if(JExpr.direct(property).eq(JExpr._null()));
JExpr.direct(property)而不是.lit导致在此JConditional中使用变量而不是“variable”。