有没有办法以速度投射物体?

Is there any way to cast an object in velocity?

我正在使用速度模板生成一些字符串并将对象类型传递给上下文。

我想将该对象转换为特定对象class有什么方法可以实现吗?

通常,您会在 Java 端处理此类任务,而不是在模板端。

尽管如此,如果您不使用 SecureUberspector,它是可行的(但真的很黑...):

#set($casted = $someObject.class.forName('target.class.name').cast($sourceObject))

Claude Brisson 的答案有效,但从 Velocity 1.6 及更高版本开始,它可以更简单地完成并且不使用 Class.forName(),这会在 类 上创建在编译时不可见的依赖项。

假设我想将某些内容投射到 String。在 Java:

context.put("String", String.class);

然后在 Velocity 中我可以使用:

#set($casted = $String.cast($sourceObject))

Source