Java 在何处关闭类中多次使用的扫描仪
因为我知道尽可能减少代码重复是更好的做法,所以我决定在整个类中只声明一个扫描器,但是我应该在哪里关闭扫描器对象,或者不一定要关闭它,关闭扫描器做什么呢Java 在何处关闭类中多次使用的扫描仪,java,methods,input,java.util.scanner,Java,Methods,Input,Java.util.scanner,因为我知道尽可能减少代码重复是更好的做法,所以我决定在整个类中只声明一个扫描器,但是我应该在哪里关闭扫描器对象,或者不一定要关闭它,关闭扫描器做什么呢 private Scanner scanner; /** * Constructor for objects of class Scanner */ public Ssss() { // initialise instance variables scanner = new Scanner(System.in); } p
private Scanner scanner;
/**
* Constructor for objects of class Scanner
*/
public Ssss()
{
// initialise instance variables
scanner = new Scanner(System.in);
}
public void enterYourName()
{
System.out.println("Enter your Name");
String name = scanner.nextLine();
System.out.println("Your name is:" + name);
}
public void enterYourAge()
{
System.out.println("Enter your Age");
int age = scanner.nextInt();
System.out.println("Your age is: " + age);
}
假设此代码位于类
Ssss
(如图所示)中,请考虑:
扫描器
对象,因此它负责关闭它扫描器
表示内部资源和类的状态。。。不同的方法会在不同的时间引用它扫描仪
——您将在何处关闭它Ssss
必须提供自己的方法,允许代码使用Ssss
说“我受够你了”。此方法传统上称为close()
,在该方法中,您可以关闭扫描仪(并清理任何其他资源)
客户端(调用类)必须在try-finally块中包装类Ssss
的用法,并在finally
子句中调用close()
方法
如果您使用的是Java7,您的类
sss
应该实现AutoCloseable
,这样就可以在try-with-resources语句中使用它来利用Java7的特性。在哪里调用输入***
方法?(请提供一些调用这些方法的代码)。输入完成后,扫描器应该关闭。我不打电话给他们,因为我使用的是bluej,我们是手动操作的。这是一个很好的问题,揭示了OO设计的一些微妙而深刻的原则:封装和组合,并将责任放在它应该承担的地方。