Scanner类与Readable接口

Java SE5的Scanner类的构造器接收的就是一个Readable接口。你会发现Readable没有用在Java标准类库中其他任何方法的参数,它是单独为Scanner创建的,以使得Scanner不必将其参数限制为某个特定的类。通过这种方式,Scanner可以作用于更多的类型。而特定类只需要实现Readable接口,并重写其中的read方法即可。

Scanner类的这种实现方法用到了策略设计模式,并且在使用Readable接口的过程中也可以使用适配器模式来适配特定类从而能作用于Scanner。具体可参考《Java编程思想》P182。

Readable源码:

public interface Readable {
    public int read(java.nio.CharBuffer cb) throws IOException;
}

关于CharBuffer说明:nio中char缓冲器(nio主要新增了通道和缓冲器),后续再深入探讨。

Scanner源码:

Info:A simple text scanner which can parse primitive types and strings using regular expressions.

Constructors:可接受File,Path,String,流及通道;

Methods:
1. hasNext及hasNext***(BigDecimal,BigInteger,Byte,Double,Float,Int等);
2. next及next***(BigDecimal,BigInteger,Byte,Double,Float,Int等);
原文地址:https://www.cnblogs.com/jayinnn/p/10971758.html