我正在开发一个插件,使用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 ...}");