使用BufferedReader用静态方法实现自定义DataReader类



我想为招聘任务实现一个小型应用程序,我开始想知道一些好的做法。

Main.class实例化了IntegerProcessor.class。IntegerProcessor完成了我任务的所有工作,并且应该从System.in.收集输入

为此,我使用BufferedReader。我现在真的很困惑,从静态的上下文中使用它是一个好的做法吗。当然,这是一个小应用程序,但我现在的导师总是强调,只有当我们确信它是安全的时,我们才应该使用静态方法,并避免将其用于读取数据(数据库连接、文件读取等(。

我是不是走错了路?

编辑:我还考虑到,由于DataReader是静态的,因此很难对其进行测试/模拟。

谢谢。

List<Integer> integersFromInput = DataReader.readIntegersFromInput();
// process the collection
List<Integer> numbers = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

String line;
System.out.println("Please enter integers: ");
while ((line = br.readLine()) != null && line.length() > 0) {
String[] strNumbers = line.split("\s+");
for (String strNumber : strNumbers) {
numbers.add(Integer.parseInt(strNumber));
}
}

if (numbers.isEmpty()){
throw new IllegalArgumentException("You haven't entered any integers!");
}

我想您正在返回"数字";呼叫方。在这种情况下,使用静态方法是一种合适的方法,因为您既没有将任何状态保存到对象中,也没有使用任何实例变量:您的方法在状态方面是自包含的。但是,如果您使用的是数据库连接,例如您提到的,使用实例方法可以将连接参数保存在对象中,并能够根据环境拥有不同的实例。

最新更新