Java的新Scanner vs Scanner.create()?

问题描述 投票:0回答:4

我在 O'Reillys Java Cookbook (2ed) 中查找一些好东西,并发现 Scanner.create() 方法大约 10 次。但 API 或类声明/实现中没有这样的内容。例如:页面示例

java java.util.scanner
4个回答
9
投票

它要么指的是非 SDK 扫描仪类型,要么是书中的错误。

Java 1.5/5
(引入时)或 SDK 6SDK 7 API 中没有 static Scanner Scanner.create()。也没有提到这种方法已被废弃(在 Java SDK API 中,这实际上意味着它从未[正式]存在:-)。

更新说明:看来

create
工厂方法确实存在于Java 5的最早预览/测试版本中。RanRag在该问题上找到了相关线程

...不,你不会发疯:Scanner 在 [Java 5] Tiger-beta1 中具有 create() 方法,但它们 切换到 [Java 5] beta2 中的构造函数。

(所以唯一正确的方法是使用构造函数。)

快乐编码。


2
投票

Oracle论坛中提到Scanner在tiger-beta1中有create()方法,但在beta2中切换到构造函数。

这不再是这样做的方法了。您应该创建一个实例 Scanner 类的创建方式与创建任何 Scanner 类的实例的方式相同 其他类,通过使用构造函数。

Scanner sc  = new Scanner(System.in)

1
投票

嗯,看起来有人在食谱发布之前没有检查更新的规格!实例化 Scanner 对象的唯一方法是:

Scanner sc  = new Scanner(System.in)

根据API文档


0
投票

作为被引用作品的作者,我对基于 Tiger (1.5) Beta 的写作所造成的不便表示歉意。令人惊讶的是,有一个不正确的示例 (

Scanner sc = Scanner.create(System.in);
) 一直出现在第三版和第四版中,但没有人在 O'Reilly 勘误网站上报告它,技术审阅者也没有发现它。嗯,第五版已经修复了,现在正在准备中!

© www.soinside.com 2019 - 2024. All rights reserved.