在intellij模板中区分int和double

differentiate int and double in intellij template

我正在 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 等方法进行构造,但其中 none 区分了 doubleint

documentation of IntelliJ给我的印象是我走投无路了。

PS:当然可以解决,通过更改java code/api,可以简化toString()方法所需的格式.但这对我来说真的是最后的选择。

#elseif ( $member.type == 'double' )
output += "myDoubleField:" + Util.doubleDescription(myDoubleField);
#elseif ( $member.type == 'int' )
output += "myIntField:" + Util.intDescription(myIntField);

出于某种原因,我无法访问 $member.isDouble 属性。它未在 IntelliJ's docs, the VTL Reference or the VTL User Guide 中列出,.type.

中也未列出

我首先打印出 $member 并列出了该对象的所有属性。我不确定为什么它列出了 isDouble。