我正在IntelliJ中定义自定义toString模板。 IntelliJ提供了基于Velocity脚本语言的模板系统。好东西!
但是我现在正面临一个特殊的问题。我需要说明int
字段和double
字段之间的区别。本质上是生成类似(简化)的内容:
public String toString() {
String output = "";
output += "myIntField:" + Util.intDescription(myIntField);
output += "myDblField:" + Util.doubleDescription(myDblField);
return output;
}
对于Integer
类型,它可以正常工作,但是我似乎无法使其适用于原始int
。
#if ($member.typeQualifiedName == "java.lang.Integer")
...
#end
#if ($member.typeName == "Integer")
...
#end
我可以使用$member.primitive
和$member.numeric
之类的方法进行构造,但是它们都无法区分double
和int
。
documentation of IntelliJ给我的印象是我处于死胡同。
PS:当然可以通过更改Java代码/ api来解决,它可以简化toString()
方法所需的格式。但这对我来说真的是不得已。
答案 0 :(得分:1)
#elseif ( $member.type == 'double' )
output += "myDoubleField:" + Util.doubleDescription(myDoubleField);
#elseif ( $member.type == 'int' )
output += "myIntField:" + Util.intDescription(myIntField);
无论出于何种原因,我都无法访问$ member.isDouble属性。它不在IntelliJ's docs,VTL Reference或VTL User Guide中,也没有.type。
我首先打印出$ member,它列出了该对象的所有属性。我不确定为什么它列出了isDouble。