我需要从被调用的方法返回ByteArrayOutputStream
的字节数组。我看到两种方法可以达到同样的目的:首先回归ByteArrayOutputStream
&使用toByteArray()
方法,然后使用baos.toByteArray()
并返回字节数组。
我应该使用哪一个?
举例说明:
方法1
void parentMethod(){
bytes [] result = process();
}
void byte[] process(){
ByteArrayOutputStream baos;
.....
.....
.....
baos.toByteArray();
}
方法2
void parentMethod(){
ByteArrayOutputStream baos = process();
}
void ByteArrayOutputStream process(){
ByteArrayOutputStream baos;
.....
.....
.....
return baos;
}
答案 0 :(得分:3)
还有另一种选择:返回InputStream
。据推测,这个想法是您返回操作产生的数据。因此,返回输出流对我来说似乎很奇怪。要返回数据,您通常要么返回原始byte[]
,要么将InputStream
包裹起来 - 后者更灵活,因为它可以从文件或类似内容中读取,但是要求呼叫者在之后关闭流。
这在一定程度上取决于呼叫者想要对数据做什么 - 如果你已经有了一个流,有些操作更容易执行;还有其他一些字节数组更容易。我会让这个决定影响很多。
如果你做想要返回一个流,那很容易:
return new ByteArrayInputStream(baos.toByteArray());
总结一下:
ByteArrayOutputStream
。使用该类来提供数据是一个实现细节,并不是操作的逻辑结果。InputStream
; ByteArrayInputStream
适用于当前的实施