在Java中向Scanner传递CharSequence

3

Scanner类有一个可以接受String参数的构造函数。

Scanner s = new Scanner( myString ) ;

如何将一个 CharSequence 对象传递给一个新的 Scanner?我可以先从 CharSequence 生成一个 String,但这是低效和愚蠢的做法。

Scanner s = new Scanner( myCharSequence.toString() ) ;  // Workaround, but seems needlessly inefficient to instantiate a `String`. 

我正在寻找一种直接从Scanner访问CharSequence的方法。类似于这样的方式:
Scanner s = new Scanner( myCharSequence ) ;  // Use `CharSequence` directly.
< p > Scanner 类还可以在构造方法中接受一个 Readable。能否将 CharSequence 作为 Readable 呈现?或者是否有其他解决方法?< /p >
1个回答

4
考虑到构造函数接受String而不是更通用的CharSequence,所以你...不能。 除非你在CharSequence上调用toString,这将使你获得一个String,满足构造函数的要求。
因此,在问题中看到的解决方法是调用CharSequence::toString,这确实是正确的做法:
new Scanner( myCharSequence.toString() ) 

好的。:-( 在阅读您的回答后,我编辑了一下,问是否可以将CharSequence呈现为Readable以满足另一个Scanner构造函数的需求。 - Basil Bourque
Javadoc说:“Nope”,因为Readable不仅不能返回任何代表CharSequence的内容,而且它似乎也不是你想要的东西,因为Readable似乎处理其他类似流的实体。 - Makoto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接