gpt4 book ai didi

Java console applications : Is System. 出来还有办法吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:02 25 4
gpt4 key购买 nike

使用 System.out(和相关的)总是因为公共(public)领域而显得笨拙,现在最新的 Netbeans 给出了一个公然的“声明应该被删除”的提示。

因此我的问题是:System.out 是否仍然是写入控制台的首选方式,或者是否还有其他应该首选的 API?

编辑:我不希望它用于日志记录,而是用于一个简单的控制台应用程序。像 ps 之类的东西将正在运行的进程打印到控制台。

最佳答案

在设计为从命令行运行的命令中,使用 System.outSystem.err 作为输出是 (IMO) 合理的,并且对于用户可以合理期望理解的错误消息。如果您从合适的 shell 或脚本运行您的应用程序,System.out 和/或 System.err 流可能会被重定向到文件或管道中的另一个进程,但这是用户的选择。

在 JDK 1.6 及更高版本中,java.io.Console让您的应用程序访问控制台。它没有在 Javadoc 中详细说明,但我怀疑 java.io.Console 打开一个新的流到控制台,因此不能被重定向。 (在道德上等同于在老式 UNIX 机器上打开“/dev/tty”。)只有当您的应用程序想要确定它正在与用户对话时才应该使用它,而没有任何重定向的可能性;例如请求和读取密码时。

但是请注意,Console 不能保证正常工作。事实上,据观察,当您从 Eclipse 运行应用程序时,它不起作用……可能还有其他 IDE。

但是,如果您的应用程序是 GUI 命令,特别是如果它打算作为无人值守的服务运行,您应该避免“写入控制台”,因为:

  • 控制台流(System.{out,err}java.io.Console)可能没有连接,或者
  • 用户可能不会注意到控制台输出,因为控制台窗口被隐藏了1,或者
  • 控制台输出最终可能会让用户感到厌烦,尤其是当您的应用程序没有提供抑制它的方法时。

1 - 根据控制台输出的性质,这实际上可能正是用户想要的。但应用程序员需要考虑到这一点。

关于Java console applications : Is System. 出来还有办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com