在intellij模板中区分int和double

时间:2018-08-02 08:55:04

标签: intellij-idea velocity

我正在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之类的方法进行构造,但是它们都无法区分doubleint

documentation of IntelliJ给我的印象是我处于死胡同。

PS:当然可以通过更改Java代码/ api来解决,它可以简化toString()方法所需的格式。但这对我来说真的是不得已。

1 个答案:

答案 0 :(得分:1)

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

无论出于何种原因,我都无法访问$ member.isDouble属性。它不在IntelliJ's docsVTL ReferenceVTL User Guide中,也没有.type。

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