0

Base64有许多返回 byte[] 的静态编码方法

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

MessageDigest也使用静态getInstance编码/摘要

但是Hex没有,它只有实例方法encode需要创建一个实例

new Hex().encode(stringToEncode.getBytes(StandardCharsets.UTF_8.name()));

我是否有理由需要创建实例来获取字节数组,或者有更好的方法吗?

例如,我目前认为添加getBytes()不是一个好主意

Hex.encodeHexString(stringToEncode).getBytes()
4

1 回答 1

1

没有可供您使用的静态方法,但该类是线程安全的,因此您可以创建它的一个实例并保留它。

这是一个常见的习惯用法,例如某些类ObjectMapper或格式化对象。当然,他们通常拥有比Hex需求更多的内部状态,所以这可能是设计疏忽。

我相信这些是实例方法的原因是构造函数采用 a Charset,这是将字符转换为字节所必需的。另一种方法是将其作为静态方法中的参数传递。当然,两者都可以实现。

于 2019-09-27T06:42:43.683 回答