静态初始化程序的代码超出了java中的65535字节限制错误?

嗨,我正在尝试初始化长度为10,100,1000,10000的4个字符串数组,这些数组就像

array1={"0","1",..."9"} array2={"00","01",..."99"} array3={"000","001",..."999"} array4={"0000","0001",..."9999"} 

但我得到的错误静态初始化程序的代码超过65535字节限制

如何初始化我的数组?

另请注意,从文件加载它不是我的选项:(

通过从常量池中加载每个值并将其分配给相应的数组索引,在java字节码中初始化常量数组。 这需要每个数组元素占用几个字节的代码。 jvm方法的大小限制为65535字节,因为它的长度使用16位数存储在类文件中。

如果在循环中无法轻松计算值,则可以将初始化分解为单独的静态函数:

 static { array1 = getValuesForArray1(); ... } private static String[] getValuesForArray1() { ... } 

如果初始化值存在模式,则其当然更好地计算动态值。

for循环。 例如:

 for (int i = 0; i <= 9; i++) array1[i] = String.valueOf(i); 

通过编写一个接受int参数并返回该数组索引处的字符串值的方法,可以更好地解决这个问题。 这里使用String.format并指定左边的填充长度:

 private static String getValue(int index, int stringLength) { return String.format("%0" + stringLength + "d", index); }