2013-03-06 46 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

相关问题