java - 在 Freemarker 中将 BigDecimal 转换为 Short

标签 java casting freemarker bigdecimal

我有一个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/

相关文章:

java - 恢复 H2 数据库,同时只有 '.db' 扩展文件

java - 用户输入的数字不重复

flash - 将 JSON 转换为自定义 ActionScript 对象?

java - 在 Freemarker 中转储 .vars 中的所有值

java - 如何使用 XPages Java 代码在自定义控件中设置输入控件的有效方法?

java - 如何同步整数数组的单个元素?

java - 类型转换一个泛型类。 (种姓)和 Class.cast()

c++ - 通过 void 指针将对象传递给函数

java - 带有 FreeMarker : Could not resolve view with name 'Home' in servlet with name 'MyServlet' 的 Spring

css - Firefox 无法识别媒体查询