Java 在ByteArrayInputStream中包装字节数组
我只是想了解使用ByteArrayInputStream类包装字节数组的过程。这是我怀疑的代码Java 在ByteArrayInputStream中包装字节数组,java,io,inputstream,Java,Io,Inputstream,我只是想了解使用ByteArrayInputStream类包装字节数组的过程。这是我怀疑的代码 byte[] bytes = new byte[1024]; //write data into byte array... InputStream input = new ByteArrayInputStream(bytes); //read first byte int data = input.read(); while(data != -1) { //do something w
byte[] bytes = new byte[1024];
//write data into byte array...
InputStream input = new ByteArrayInputStream(bytes);
//read first byte
int data = input.read();
while(data != -1) {
//do something with data
//read next byte
data = input.read();
}
我的问题是,是否有可能写下这一部分
InputStream input=newbytearrayinputstream(字节)代码>
像这样
ByteArrayInputStream输入=新的ByteArrayInputStream(字节)代码>
为什么这段代码的作者创建了包含超类和子类的对象
我真的很感谢你的帮助
可以写这部分吗
像这样
当然可以。你为什么不这么认为?你试的时候发生了什么?你为什么用StackOverflow来代替结论性实验
为什么这段代码的作者创建了包含超类和子类的对象
他没有。他将对象创建为ByteArrayInputStream
的实例。然后,他将结果分配给InputStream
类型的变量。这很正常。是的,你可以写
InputStream input = new ByteArrayInputStream(bytes);
像
它在功能上是相同的
然而,在OOP中,人们普遍建议“编程到接口”。请参阅以获取解释
在这种情况下,严格来说,InputStream
不是一个接口,而是一个抽象的超类。不过,它或多或少像一个界面。谢谢你的回答,我不是在这里做实验。我正在寻求帮助来理解这个概念。我认为这就是网站的目的,对吗?@TabTab对于有经验的开发人员来说,经常令人困惑的是,为什么人们会问一些自己更容易解决的问题。InputStream input
不是一个对象,它是对必须实现此接口的对象的引用。注意:您不能创建InputStream的实例。
( ByteArrayInputStream input = new ByteArrayInputStream(bytes);)
InputStream input = new ByteArrayInputStream(bytes);
ByteArrayInputStream input = new ByteArrayInputStream(bytes);