OGNL 数値

数値を取得してみる。


import ognl.*;
import java.util.*;

public class OgnlSample
{
public static void main(String[] args) throws Exception{
// 数値
String exp1 = "1";
String exp2 = "2147483647";
Object val1 = Ognl.getValue(exp1, (Object) null);
Object val2 = Ognl.getValue(exp2, (Object) null);
System.out.println(exp1 + ": " + dump(val1));
System.out.println(exp2 + ": " + dump(val2));
}

private static String dump(Object obj) {
StringBuffer buf = new StringBuffer();
buf.append(obj);

if(obj != null) {
buf.append("(" + obj.getClass().getName() + ")");
}

return buf.toString();
}
}

で、結果。

1: 1(java.lang.Integer)
2147483647: 2147483647(java.lang.Integer)
「2147483647」→「2147483648」にすると…

java.lang.NumberFormatException: For input string: "2147483648"
at java.lang.NumberFormatException.forInputString(Unknown Source)
...
数値は、intの範囲内…と。