Очевидно, существует ограничение на размер строки инициализации в javac. Кто-нибудь может помочь мне определить, каков максимальный предел?
Спасибо
edit:
Мы создаем строку инициализации, которая будет выглядеть примерно так "{1,2,3,4,5,6,7,8......}", но в идеале с 10 000 чисел. Когда мы делаем это для 1000 чисел, все работает, а для 10 000 выдает ошибку, говоря, что код слишком велик для оператора try.
Для этого мы используем построитель строк и циклически перебираем массив, добавляя значения. Очевидно, это ограничение в javac. Нам сказали, что мы можем перестроить массив в вызываемом методе, если будем передавать его небольшими кусками. Однако это невозможно, потому что у нас нет контроля над пользовательским методом, который мы вызываем.
Я хотел бы опубликовать код, но не могу, потому что это проект для университета. Я не ищу кодовых решений, просто нужна помощь в понимании сути проблемы.
Это цикл for, который является нарушителем
Object o = new Object()
{
public String toString()
{
StringBuilder s = new StringBuilder();
int length = MainInterfaceProcessor.this.valuesFromData.length;
Object[] arrayToProcess = MainInterfaceProcessor.this.valuesFromData;
if(length == 0)
{
//throw exception to do
}
else if(length == 1)
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+"}");
}
else
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+","); //opening statement
for(int i = 1; i < length; i++)
{
if(i == (length - 1))
{
//last element in the array so dont add comma at the end
s.append(getArrayItemAsString(arrayToProcess, i)+"}");
break;
}
//append each array value at position i, followed
//by a comma to seperate the values
s.append(getArrayItemAsString(arrayToProcess, i)+ ",");
}
}
return s.toString();
}
};
try
{
Object result = method.invoke(obj, new Object[] { o });
}