在Intellij IDE中,您可以编写自己的代码生成模板。我想编写一个用于生成我的等于方法(equals method)的模板。
目标是拥有一个不区分null和空字符串的等于方法,像这样:
(使用apache.commons.language中的StringUtils.IsNotEmpty)
我希望能将这个等式写成模板,以便为我使用的所有POJO生成代码。
问题在于,我并不完全理解用于IntelliJ模板生成的语言和标记的语法。它看起来像这样:
(使用apache.commons.language中的StringUtils.IsNotEmpty)
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
POJO pojo = (POJO) o;
if(StringUtils.IsNotEmpty(stringAtt) ? !stringAtt.equals(pojo.stringAtt) : StringUtils.IsNotEmpty(pojo.stringAtt)) return false;
return true;
}
我希望能将这个等式写成模板,以便为我使用的所有POJO生成代码。
问题在于,我并不完全理解用于IntelliJ模板生成的语言和标记的语法。它看起来像这样:
#parse("equalsHelper.vm")
public boolean equals(##
#if ($settings.generateFinalParameters)
final ##
#end
Object $paramName){
#addEqualsPrologue()
#if ($fields.size() > 0)
#addClassInstance()
#foreach($field in $fields)
#addFieldComparison($field)
#end
#end
return true;
}
##
#macro(addFieldComparison $field)
#if ($field.notNull)
if(!${field.accessor}.equals(${classInstanceName}.$field.accessor))return false;
#else
if($field.accessor != null ? !${field.accessor}.equals(${classInstanceName}.$field.accessor) : ${classInstanceName}.$field.accessor != null)return false;
#end
#end
##
我在Intellij的文档页面上寻找了这个语法的解释,但没有找到。
- 请问有人能给我一个好的例子或者指向一些文档网页,以便我学习如何使用它吗?
- 或者请问这是哪种语言,我可以自己学习吗?
谢谢。