簡體   English   中英

從Jtwig模板訪問靜態常量數組

[英]Accessing static constant arrays from Jtwig template

因此,我根本無法收集對常量靜態數組中的值的訪問。

讓它成為我的代碼中的數組:

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。 關於如何克服這一點的任何想法,或者目前在技術上是不可能的?

例外

java.lang.ClassCastException:[我無法轉換為[Ljava.lang.Object;

表示數組MY_ARRAY是一個int類型的數組,而int是一個原始類型 ,因此它不是Object的子類型,因此不能將其 MY_ARRAYObject類型的array

在這種情況下,您可以將MY_ARRAY的簽名更改為public static Integer[] MY_ARRAY

Integerint值包裝在Object

以下示例說明了這一點:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM