Размер строки инициализации в java

Очевидно, существует ограничение на размер строки инициализации в 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 });

}

8
задан Biscuit128 30 November 2011 в 15:00
поделиться