所以,我根本无法收集对常量静态数组中值的访问。
让我的代码成为一个数组:
public static int[] MY_ARRAY;
这就是我试图访问该阵列的方式:
{{ constant("com.package.configs.MainConfig.MY_ARRAY")[0] }}
此尝试导致错误:
java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
at org.jtwig.value.convert.collection.ArrayToCollectionConverter.convert(ArrayToCollectionConverter.java:11)
at org.jtwig.value.convert.CompositeConverter.convert(CompositeConverter.java:15)
at org.jtwig.render.expression.calculator.MapSelectionExpressionCalculator.calculate(MapSelectionExpressionCalculator.java:19)
at org.jtwig.render.expression.calculator.MapSelectionExpressionCalculator.calculate(MapSelectionExpressionCalculator.java:12)
at org.jtwig.render.expression.CalculateExpressionService.calculate(CalculateExpressionService.java:14)
...
我还尝试先将一个常量赋给变量,然后再访问它,但没有改变。
以前,在旧版本的JTwig中,我能够访问传递给模型的对象的任何公共静态字段。但现在这些领域被忽略了。
我使用的版本是5.86.0。 关于如何击败这一点的任何想法,或者此时它在技术上是不可能的?
答案 0 :(得分:0)
例外
java.lang.ClassCastException:[我无法转换为[Ljava.lang.Object;
表示数组MY_ARRAY
是int
类型数组,int
是primitive,因此它不是{{3}的子类型所以你不能把它投射到Object
- 类型数组。
在这种情况下,您可以将MY_ARRAY
的签名更改为public static Integer[] MY_ARRAY
。
以下示例说明了这一点:
public static void main(String args[]) {
int[] arr = new int[5];
Integer[] arrI = new Integer[5];
test(arr); // error:The method test(Object[]) in the type Demo is not applicable for the arguments (int[])
test(arrI); // ok
}