2013-03-06 76 views
-2

我覺得有點奇怪,在Java API中有很多readLine方法,通常在流或流讀取器類中。在Java中,像BufferedReader類中的readLine方法有沒有任何接口?

我想使用一種Reader,它也支持逐行輸入讀取(顯然暗示字符閱讀器)。

我可以指定對象爲BufferedReader一人,但我想用一個接口代替,來概括它所有的有點,並允許其他readLine - 啓用Reader實現。

我想這會看起來像以下:

interface LineReader 
{ 
    String readLine(); 
} 

一樣存在我猜沒有什麼可以作爲的,比如說部分「標準」在Java API中,甲骨文的Java 7 SDK?有點不幸,不是嗎?

+1

我不知道是什麼的問題在這裏。我很欣賞你與我們分享了你的想法,但我認爲這不是這樣做的地方。 – Dariusz 2013-03-06 12:09:13

+0

你好Dariusz,我相信這個問題在標題中表現得很好? – amn 2013-03-06 12:31:45

+0

是的,但你知道BufferedReader沒有實現你正在談論的那個接口。因此,即使有這樣的界面,在讀者使用方面也是毫無意義的。 – Dariusz 2013-03-06 12:33:59

回答

2

我猜測這只是作爲Oracle Java 7 SDK的一部分提供的「標準」Java API中存在的東西嗎?

不是我所知道的。你當然也可以創建自己的接口:

interface LineReader { 
    String readLine() throws IOException; 
} 

class BufferedLineReader extends BufferedReader implements LineReader { 
    // ... 
} 

class SpecialLineReader implements LineReader { 
    @Override 
    public String readLine() throws IOException { 
     // ... 
    } 
} 

而且使用它像

LineReader lr = new BufferedLineReader(new FileReader(...)); 
lr.readLine(); 

LineReader lr2 = new SpecialLineReader(); 
lr2.readLine(); 
+0

謝謝,這就是我最終做的。我認爲這種方法可以與無關的功能(緩衝讀取)一起使用,這很奇怪 - 這違反了班級中高內聚和鬆散耦合的原則。當然,緩衝讀取可以簡化逐行讀取的實現,但仍然... – amn 2013-03-06 12:34:56

相關問題