我是新來的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