我有一个Map<Short, String>
在我的 freemarker 值堆栈中,我需要以这种方式打印模板中的值:
${map.get(3)}
由于 freemarker 解释为 3
作为 BigDecimal 会引发异常:
freemarker.core._TemplateModelException:[...]
[...]
Caused by: java.lang.ClassCastException: java.lang.Short cannot be cast to java.math.BigDecimal
at java.math.BigDecimal.compareTo(BigDecimal.java:220)
at java.util.TreeMap.getEntry(TreeMap.java:352)
at java.util.TreeMap.get(TreeMap.java:278)
当然,我可以在值堆栈中访问 String 值,但是有没有更优雅的方法将数字转换为 Short
在自由标记中?
(我正在使用 freemarker 2.3.25
)
最佳答案
尝试${map.get(3?short)}
。
这是调用未声明其参数类型的 API 的问题(例如 Map.get(Object)
;泛型类型参数在编译期间被删除)。
关于java - 在 Freemarker 中将 BigDecimal 转换为 Short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42419251/