为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2023-09-06 16:17:16
Base64有许多静态编码方法,返回 byte[] 为Base64.encodeBase64(stringToEncode.getBytes(StandardCharsets.UTF_8.name()));MessageDigest也使用静态getInstance来编码/摘要但Hex没有,它只有实例方法编码,需要创建一个实例new Hex().encode(stringToEncode.getBytes(StandardCharsets.UTF_8.name()));我是否需要创建实例来获取字节数组,或者有更好的方法吗?getBytes()例如,我目前认为添加不是一个好主意Hex.encodeHexString(stringToEncode).getBytes()
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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

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

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


查看完整回答
反对 回复 2023-09-06
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信