栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么ByteArrayOutputStream使用int?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么ByteArrayOutputStream使用int?

ByteArrayOutputStream
只是覆盖在中声明的抽象方法
OutputStream
。因此,真正的问题是
OutputStream.write(int)
,当声明的目标是向流中写入单个字节时,为什么要这样声明。流的实现在这里无关紧要。

您的直觉是正确的-在我看来,这是设计的断点。是的,它将丢失数据,正如在文档中明确指出的那样:

要写入的字节是参数b的八个低位。b的24个高阶位被忽略。

(我认为)这样做会更加明智

write(byte)
。唯一的缺点是,如果不进行强制转换,就无法使用文字值来调用它:

// Write a single byte 0. Works with current pre, wouldn't work if the parameter// were byte.stream.write(0);

看起来不错,但不是-因为文字0的类型是

int
,因此不能隐式转换为
byte
。您必须使用:

// Ugly, but would have been okay with write(byte).stream.write((byte) 0);

对我来说,这不是按原样设计API的充分理由,但这就是我们所拥有的-从Java 1.0开始就拥有了。不幸的是,如果不能在所有地方进行重大更改,现在无法修复。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574047.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号