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