它将相关类打印为java.lang.Longorjava.lang.String但它没有转换。请帮助解决这个问题。
有没有其他简单的方法可以做到这一点。?
在 Java 文件中设置
resolver.setAttirbutes("Long",Long.class);
resolver.setAttirbutes("String",String.class);
在VM文件中转换
$Long.parseLong($String.valueOf(2))
这不是静态方法的工作方式。Long.class.parseLongJava中存在吗?不,您不是在放置对 的静态引用Long,而是在放置处理反射和类加载的类对象。出于安全原因,Velocity 甚至不允许您调用Class除getName. 您想传递对Long自身的引用, not Long.class,但不幸的是,这是不可能的。
但是由于静态方法也可以在该类的任何实例上调用,所以您只需将Long对象放入上下文中,例如Long.MAX_VALUEor Long.valueOf(0)。
甚至不是这样,因为 Velocity 只能存储对象,而不是原始值,所以 anylong实际上是 a Long,而 anyint实际上是a Integer,所以你可以这样做:
#set ($two = 2)
$two.class -> java.lang.Integer
#set ($twoLong = $two.longValue())
$twoLong.class -> java.lang.Long
#set ($threeLong = $twoLong.valueOf('3'))