嗯。我正在尝试编写一个接受字节的类,并希望为此目的实现一个众所周知的接口。
java.io.OutputStream
是一个抽象类,而不是一个接口(为什么???),这让我感到紧张,因为我不知道扩展它的后果是什么。如果没有后果,那应该是一个界面。否则,它会让我认为它定义了equals()
和hashCode()
或者可能是Serializable
相关行为之一,并且在尝试扩展它之前我应该知道一些事情。无论如何,如果我扩展它,那意味着我已经用完了我的1个超类,并且无法扩展对我的应用程序更重要的其他东西。
java.lang.Appendable
是一个可以实现我想要的界面,但是对于字符,而不是字节。
java.nio.WritableByteChannel
是我想要的,我可能会使用它,但它只接受ByteBuffers作为输入,而不是byte []数组。
还有其他建议吗? (p.s.是“输入 - 输出”I / O问题的最佳标记?)
答案 0 :(得分:1)
java.io.DataOutput
可能适合你,虽然它有比你要求的更多的方法。
答案 1 :(得分:1)
为什么要使用众所周知的界面?
为您的目的创建自己的界面没有任何害处。
此外,我不会致电Appendable
或WritableByteChannel
'众所周知'。
答案 2 :(得分:1)
扩展java.io.OutputStream应该没有问题。它被设计用作基类。如果您担心,请查看OutputStream的源代码。
我唯一的问题是OutputStream API是否符合您的应用程序要求,或者不同的API是否更合适。如果您设计的自己的界面更符合您的应用程序要求,那么没有人会抱怨。