将输入扫描程序(如键盘)声明为类的全局变量是否被认为是错误的编程习惯?如:
private static Scanner input = new Scanner(System.in);
我正在处理来自各种方法的大量输入,并且似乎很容易将键盘发送到每个方法
答案 0 :(得分:6)
使用全局变量似乎要容易得多,但从长远来看,它可能会使代码难以维护,您是否考虑过创建一个类来处理键盘输入?通过良好的关注点分离,您可以获得更清晰的代码。
答案 1 :(得分:4)
最好是为创建输入和/或生成输出创建一个特殊类 例如
class IO{
Scanner scanner ;
public Scanner getScanner(){
return new Scanner();
}
public Scanner getScanner(File file){
return new Scanner(new FileReader(file));
}
... // other types of scanners
}
答案 2 :(得分:1)
取决于应该如何使用对象将定义放置它的位置。
如果Scanner只有一个实例,那么请考虑将其设为单例,而不是使用构造函数创建它。以下链接描述了单身人士:
http://www.javaworld.com/article/2073352/core-java/simply-singleton.html
然后,Scanner类可以使用名为“getInstance”的公共静态方法,而不是将其作为静态全局。因此,您不是将扫描仪的实例绑定到任何特定位置,并且无论何时需要使用它,都可以从任何地方调用Scanner.getInstance来访问该类的基础实例。
答案 3 :(得分:1)
总的来说,这是好的,因为它是您应用程序中非常常用的对象。但是,据我所知,你可以面对两个问题:
因此,它取决于您的应用程序的大小以及它在多线程方面的使用方式。我会在家里做但不在工作。