用于生成自定义 IntelliJ toString 方法的速度模板
Velocity Template for generating custom IntelliJ toString method
鉴于 class
public class TestClass
{
private static List<TestClass> tmp = new ArrayList<>();
private String test1 = "";
private String test2 = "";
private String test3 = "";
}
我正在尝试定义一个自定义 IntelliJ
代码生成模板,该模板将在表单
中创建一个 toString()
方法
public String toString()
{
final String output = "%s{ test1[%s], test2[%s], test3[%s] }";
return String.format(output, this.getClass().getSimpleName(), test1, test2, test3);
}
我有以下速度模板,但输出不正确。
public java.lang.String toString()
{
#set($i = 0)
final String output = "%s{ #foreach($member in $members)#if($i == 0)$member.accessor [%s]#else,$member.accessor [%s]#end#set($i = $i + 1)#end ";
return String.format(output, this.getClass().getSimpleName() #foreach($member in $members),$member.accessor #end);
}
输出为
public String toString()
{
final String output = "%s{ test1 [%s],test2 [%s],test3 [%s] ";
return String.format(output, this.getClass().getSimpleName(), test1, test2, test3);
}
当我尝试向字符串添加右大括号 (}) 时,模板无法呈现。
我也不知道如何删除每个字段及其值容器(方括号)之间的 space,也不知道如何在每个逗号后添加 space。我已经检查了 Apache velocity 文档,但没有找到任何我可以应用的东西。
我知道我可以使用 StringBuilder
并将正确的元素组合在一起以获得相同的输出。但是,现在让 Velocity 模板使用上述格式工作是一项任务:-)
您可以使用 ${}
而不是 $
来访问变量,这将有助于空格:
final String output = "%s{ #foreach($member in $members)#if($i == 0)${member.accessor}[%s]#else, ${member.accessor}[%s]#end#set($i = $i + 1)#end ";
鉴于 class
public class TestClass
{
private static List<TestClass> tmp = new ArrayList<>();
private String test1 = "";
private String test2 = "";
private String test3 = "";
}
我正在尝试定义一个自定义 IntelliJ
代码生成模板,该模板将在表单
toString()
方法
public String toString()
{
final String output = "%s{ test1[%s], test2[%s], test3[%s] }";
return String.format(output, this.getClass().getSimpleName(), test1, test2, test3);
}
我有以下速度模板,但输出不正确。
public java.lang.String toString()
{
#set($i = 0)
final String output = "%s{ #foreach($member in $members)#if($i == 0)$member.accessor [%s]#else,$member.accessor [%s]#end#set($i = $i + 1)#end ";
return String.format(output, this.getClass().getSimpleName() #foreach($member in $members),$member.accessor #end);
}
输出为
public String toString()
{
final String output = "%s{ test1 [%s],test2 [%s],test3 [%s] ";
return String.format(output, this.getClass().getSimpleName(), test1, test2, test3);
}
当我尝试向字符串添加右大括号 (}) 时,模板无法呈现。
我也不知道如何删除每个字段及其值容器(方括号)之间的 space,也不知道如何在每个逗号后添加 space。我已经检查了 Apache velocity 文档,但没有找到任何我可以应用的东西。
我知道我可以使用 StringBuilder
并将正确的元素组合在一起以获得相同的输出。但是,现在让 Velocity 模板使用上述格式工作是一项任务:-)
您可以使用 ${}
而不是 $
来访问变量,这将有助于空格:
final String output = "%s{ #foreach($member in $members)#if($i == 0)${member.accessor}[%s]#else, ${member.accessor}[%s]#end#set($i = $i + 1)#end ";