2011-11-17 197 views
3

有沒有人有任何建議在Java中創建管道對象是一個InputStream和OutputStream,因爲Java沒有多重繼承,並且這兩個流都是抽象類而不是接口?java輸入輸出流

+2

也許......「青睞‘的對象組成’過‘類繼承’。」 (Gang of Four 1995:20) – blank

回答

3
+0

Javadoc明確聲明_「不建議嘗試使用來自單個線程的兩個對象,因爲它可能導致線程死鎖」_。會發生什麼是'PipedInputStream.read()'會阻塞調用線程,直到在另一個線程中調用相關的'PipedOutputStream.write()'爲止。 – Matthieu

0

你不會有一個實例既是輸入和輸出 - 流使用。相反,您可以擁有一個Pipe對象,它封裝(即組合)一個用於讀取的InputStream和一個用於寫入的OutputStream。

非常像你在標準API中有System.inSystem.out

0

這是你並不需要多重繼承的一個很好的案例,而且你問的問題是這樣的事實我有點擔心。

在這種情況下,您將有一個具有輸入流和輸出流的類。無需擴展任何內容或使用接口。

改變你的代碼來執行此操作後,閱讀這篇文章,瞭解組成VS繼承: http://www.artima.com/lejava/articles/designprinciples4.html