Преобразование StringBuffer в массив байтов в Java

#java #stringbuffer

#java #stringbuffer

Вопрос:

Как я могу в Java преобразовать StringBuffer в массив байтов?

Комментарии:

1. можете ли вы просто выполнить String.valueOf(StringBuffer).getBytes()?

2. Обязательно укажите кодировку с getBytes помощью … «Кодирует эту строку в последовательность байтов, используя кодировку платформы по умолчанию …» Это одна из глупых областей, где они просто не выбрали универсальное значение по умолчанию.

Ответ №1:

Лучшей альтернативой было бы stringBuffer.toString().getBytes()

Лучше, потому String.valueOf(stringBuffer) что в свою очередь вызывает stringBuffer.toString() . Прямой вызов stringBuffer.toString().getBytes() сэкономит вам один вызов функции и сравнение с equals null .

Вот java.lang.String реализация valueOf метода:

 public static String valueOf(Object obj) {

        return (obj == null) ? "null" : obj.toString();

}
  

Ответ №2:

Я говорю, что у нас есть ответ от Грега:

 String.valueOf(stringBuffer).getBytes()
  

Комментарии:

1. сначала будет произведена репликация буфера. Если входной StringBuffer имеет размер 1 МБ, то вы создадите еще один объект размером 1 МБ, а затем преобразуете его в байты. Не очень хорошее решение.

2. @chendu какое решение вы рекомендуете?

3. @Eric У меня нет чистого решения. Возможно, нам не следует использовать строковый буфер. Ближайшим грязным решением является доступ к переменной StringBuffer: private transient char[] toStringCache; через отражения и копирование ее в переменную класса String private final char[] value;