java - Apache 通用编解码器 - 为什么 Hex.encode() 不是静态的?

标签 java hex apache-commons-codec

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()

最佳答案

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

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

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

关于java - Apache 通用编解码器 - 为什么 Hex.encode() 不是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58128819/

相关文章:

java - 使用 Jpedal 渲染包含视觉签名的 PDF 文档

java - 在 WebView 中启用 JavaScript 后,Recaptcha 无法正常工作

java - 如何使用正则表达式计算文本中的字数?

c - 如何在C中将字符串转换为十六进制值

java - base64 url​​ 安全删除 =

java - DigestUtils md5Hex 的问题

java - 使用 java 创建重复的 xml 元素

java - 如何在java中减去或添加两个十六进制值

javascript - 在 JavaScript 中将整数转换为十六进制字符串

java - Base64 编码和解码不会给出相同的结果