我是新来的Lambda表达式在Java中,我不知道是否有必要座Lambda表达式内还靠近扫描仪:是否需要关闭扫描仪内部的Lambda表达式?
public interface factorialInterface {
int factorialMe (int n);
}
import java.util.Scanner;
public class factorialDemo {
public static void main(String args[]) {
Scanner keyb = new Scanner (System.in);
factorialInterface fact = (n) -> {
int result = 1;
for (int i = 1; i <= n; i++) {
result = i * result;
}
keyb.close(); // <- not sure about this one.
return result;
};
System.out.print("Pass value: ");
System.out.println(fact.factorialMe(keyb.nextInt()));
System.out.println();
keyb.close();
}
}
如果我不关闭的这里面的“KEYB”阻止Eclipse会通知我有关资源泄漏的信息。总是建议关闭Lambda块内的扫描仪? 感谢您的帮助!
你确定要关闭'System.in'吗? – bradimus
我会说日食是错误的。您的lambda没有理由与扫描仪有任何关系。 – njzk2
您应该总是关闭一个'Scanner',*除''System.in'上的'Scanner'外。你不应该关闭'System.in'。 Eclipse没有这种例外,所以你必须通过在'Scanner keyb = ...'之前的行上添加'@SuppressWarnings(“resource”)'来告诉它。 – Andreas