Я бы порекомендовал вам сделать так, как предлагает предупреждение, и использовать поток, а не байтовый массив. Если ответ, который вы пытаетесь выдвинуть, особенно велик (предположим, это большой файл), вы загрузите все это в память, и это было бы очень плохо.
Вам действительно лучше использовать потоки.
Тем не менее, вы можете взломать его, временно заменив System.err или System.out. Это просто PrintStream
объекты, и они устанавливаются с помощью методов setOut и setErr.
PrintStream oldErr = System.err;
PrintStream newErr = new PrintStream(new ByteArrayOutputStream());
System.setErr(newErr);
// do your work
System.setErr(oldErr);
Edit:
Я согласен, что было бы предпочтительнее
использовать потоки, но, как сейчас,
целевой API, где мне нужно поставить
ответ является байтовым массивом. Если
необходимо, мы можем сделать рефакторинг к
API, который позволит ему принять
поток; это было бы лучше.
предупреждение определенно есть для
причина.
Если вы можете изменить API, сделайте это. Потоковая обработка - лучший способ пойти в этом случае. Если вы не можете этого сделать из-за внутреннего давления или чего-то подобного, пройдите по маршруту @ John M и накачайте BUFFER_WARN_TRIGGER_LIMIT
- но убедитесь, что у вас есть известная длина контента, или даже этот маршрут потерпит неудачу.