Общий кодек Apache - Почему Hex.encode () не является статичным? - PullRequest
0 голосов
/ 27 сентября 2019

Base64 есть много статических методов кодируют возвращающихся байты [], как

Base64.encodeBase64(stringToEncode.getBytes(StandardCharsets.UTF_8.name()));

Также MessageDigest используя статические getInstance для кодирования / переваривать

1010 * Но Hex нет, то есть только метод экземпляра закодировать , который требует, чтобы создать экземпляр
new Hex().encode(stringToEncode.getBytes(StandardCharsets.UTF_8.name()));

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

1019 * в настоящее время я не думаю, что добавление getBytes() является хорошей идеей, например, 1022 *

1 Ответ

1 голос
/ 27 сентября 2019

Статического метода для вас нет, но класс является поточно-ориентированным, поэтому вы можете просто создать его экземпляр и сохранить его.

Это распространенная идиома для некоторых классов, таких как ObjectMapperили форматирование объектов, например.Конечно, они обычно имеют больше внутреннего состояния, чем нужно Hex, так что, возможно, это был недосмотр проекта.

Я считаю, что причина этих методов экземпляра в том, что конструктор принимает Charset, что требуетсядля преобразования символов в байты.Альтернативой было бы передать его в качестве параметра в статическом методе.Конечно, и то, и другое можно реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...