как передать “тяжелую” строку?

253
04 мая 2017, 12:41

В переменной - свёрстанная страница письма. При компиляции ошибка:

Error:(138, 17) java: constant string too long

Как мне передать эту переменную в метод? Разрезать-забить массив-передать массивом? Потоком?

Answer 1

По спецификации виртуальной машины Java максимальная длина строкового литерала — 65535. Определить в коде строковую константу большей длины не получится.

Обойти это можно несколькими способами.

  1. Загружать строку из текстового файла/базы данных/конфигурации приложения и т.п.

  2. Разбить строку на подстроки допустимой длины и определить ее так, чтобы компилятор не считал ее константой.

Например:

 String tmp = "";
 String value = tmp+
        "длинная подстрока 1 ... (еще 60000 символов)"+
        "длинная подстрока 2 ... (еще 60000 символов)"+
        ....
        "длинная подстрока n ... (еще 60000 символов)";

Рекоммендую первый способ, т.к. хранить такие строки в коде неудобно как для строк (сверстанную страницу нужно будет изменять), так и для кода (переписывать код посреди которого гигантский блок текста неудобно).

Полезные ссылки:

  • Вопрос по ошибке «constant string too long» на StackOverflow с альтернативными вариантами решения проблемы.
  • Вопрос на StackOverflow по максимальной длине строкового литерала.
  • Java Tutorial. Основы чтения/записи.
  • Java Tutorial. Файлы конфигурации.
READ ALSO
Javafx. Получить TableCell из TableView или из TableColumn.CellEditEvent

Javafx. Получить TableCell из TableView или из TableColumn.CellEditEvent

Собственно есть участок кода в событии редактирования в котором имеется сам TableViewи TableColumnCellEditEvent

299
Вернуть данные RxJava

Вернуть данные RxJava

Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод Clan_DannieRx(playergetPersonaly_dannie()

216
Как изменить положение радиопереключателя в меню?

Как изменить положение радиопереключателя в меню?

Как сделать, чтобы переключатели отображались слева от наименования и уменьшить расстояние?

259
Что делать с кодировкой страниц?

Что делать с кодировкой страниц?

Работаю в BitrixСоздал сайт в кодировке UTF-8, затем скопировал на него шаблон, созданный в однобайтовой кодировке, в результате чего, все русские...

238