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

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


一只名叫tom的猫
浏览 65回答 1
1回答

斯蒂芬大帝

没有静态方法可供您使用,但该类是线程安全的,因此您只需创建它的实例并保留它即可。这是一些类的常见习惯用法,例如ObjectMapper或格式化对象。当然,它们通常拥有比Hex需求更多的内部状态,所以这可能是一个设计疏忽。我相信这些实例方法的原因是构造函数采用 a Charset,这是将字符转换为字节所必需的。另一种方法是将其作为静态方法中的参数传递。当然,两者都可以实施。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java