По-видимому, существует ограничение на размер строки инициализации в javac. Может ли кто-нибудь помочь мне в определении максимального лимита?
Спасибо
изменить
Мы создаем строку инициализации, которая будет выглядеть примерно так: "{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 });
}