小编Luc*_*aro的帖子

为什么 Scanner 方法不返回 void?

我注意到,在使用扫描仪时,如果我想设置分隔符或区域设置等属性,则执行此操作的方法会返回对象Scanner本身:

public Scanner useDelimiter(String pattern) {
    modCount++;
    delimPattern = patternCache.forName(pattern);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,如果属性被更改(而不是创建一个新对象),为什么它会返回一个Scanner对象而不是void?这并不是说我必须将返回值存储在变量中 - 事实上,如果我尝试这样做,就像下面的代码一样,Eclipse 将给出以下消息Resource leak: 'lineScanner' is not closed at this location

Scanner scanner = new Scanner(new File("accounts.csv"));
String line;
    
while(scanner.hasNextLine()) {
    line = scanner.nextLine();
    Scanner lineScanner = new Scanner(line);
    lineScanner = lineScanner.useDelimiter(",");
    ...
}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

2
推荐指数
1
解决办法
133
查看次数

标签 统计

java ×1

java.util.scanner ×1