Windows 上的 Java Shell REPL 行输入的行为方式与大多数其他 Windows 控制台应用程序中行输入的行为方式不同:
- Ctrl+向左箭头组合键不会转到上一行的开头。
- 文件结尾字符是 Ctrl+D(类似于 Unix)而不是 Ctrl+Z。
- 使用水平箭头键滚动时光标消失。
- 打字时有一个短暂的延迟(大约 0.1 秒),直到出现输入的每个字母。
Java 9 和 10 都会发生这种情况。相比之下,Kotlin REPL 没有表现出这种奇怪的行为。Java 的BufferedReader.readLine()
orScanner.nextLine()
方法在使用System.in
, 或时也没有System.console().readLine()
。
我的问题:
为什么 Java Shell 使用这种行输入?(我的意思是它是否提供了任何特殊的好处来弥补它更难使用?)
是否有配置告诉它使用正常的用户输入方法?
它使用什么 Java API 方法来读取用户输入(只是为了让我记得不要自己使用它)?