javaではオートボクシングによって、引数がlongのメソッドをint型の変数を引数で渡して呼び出すことが出来ますが、Velocityでも同じようにオートボクシングが使えるようです。また、オートボクシングではlong型からint型に直すことは出来ませんが(表現できる値の範囲がlong型の方がint型よりも広いため)、Velocityでもそれは同様ですので注意が必要です。
下記は検証用のコード
テンプレート:
getInt:${result.getInt()} getLong:${result.getLong()} isInt(getInt): ${result.isInt(${result.getInt()})} isInt(getLong): ${result.isInt(${result.getLong()})} isInt(getLongintValue): ${result.isInt(${result.getLong().intValue()})} isLong(getInt): ${result.isLong(${result.getInt()})} isLong(getLong):${result.isLong(${result.getLong()})}
resultにはnew Data(3)を設定:
context.put("result", new Data(3));
Dataクラス:
public class Data{ private int note; public Data(int string) { note=string; } public int getInt(){ return note; } public long getLong(){ return (long)note; } public int isInt(int a){ return a; } public long isLong(long a){ return a; }
出力結果:
getInt:3 getLong:3 isInt(getInt): 3 isInt(getLong): ${result.isInt(${result.getLong()})} isInt(getLongintValue): 3 isLong(getInt): 3 isLong(getLong):3
引数がint型のメソッドを、long型の変数を入れて呼び出すことは出来ないことが確認できました。