我最近接触了 Java。我有动态语言的背景,我终于弄清楚为什么人们抱怨 Java 的冗长。有没有解决这个问题的类库?我宁愿键入类似的东西,String text = someClass.stdin()
而不是在 Java 中获取用户输入所需的 8 行左右。
6 回答
在 Java 5 中:
import java.util.Scanner;
...
System.out.print("Enter your name: ");
String userName = new Scanner(System.in).nextLine();
或者,在 Java 6 中:
String userName = System.console().readLine("Enter your name: ");
一些Apache Commons库(特别是 Lang、IO 和 Collections)旨在隐藏某些核心 Java API 的冗长性。然而,我们都被 Java 语言的冗长所困扰。
当然有几个 JPython、JRuby、Clojure、Scala ......
谷歌还发布了一些库来补充标准库的某些部分,比如集合库。Guice 也是一个不错的轻量级 DI 框架,恕我直言,那个春天更容易学习。
标准库是如此之大,我认为您不会找到一个可以替代所有内容的库。最好的办法是寻找解决个别问题的库(即我不喜欢 Collections API,我需要一个对象池等)
我有兴趣看到这 8 行以获取 Java 中的用户输入。
我个人认为随着您的程序变得更大,Java 的冗长成为一种资产。与 C 和 C++ 不同,一切都以更加面向对象的方式完成。你得到代表你的输出的对象,然后你对它发出一个操作,等等。从长远来看,更容易理解和维护。
这和这里那里的一个不错的 printf() 一样快吗?不。它和 Python 中的脚本一样方便吗?当然不是。但这是使用像 Java 这样的语言的一部分成本,就像缺少 Lambdas 很烦人一样。
作为工程师,您的职责是为工作选择最佳工具。我的大部分编码都是在 Java 中完成的,有些是在 Python 中完成的,我接受了两者之间的权衡。
虽然您无法更改语言,但您可以使用简化某些操作的库(例如,Google 或 Apache 的 IO 库)。你也可以为最让你烦恼的事情编写自己的类。
我还认为您混淆了语言和标准库的冗长。该库包含很多东西,其中大部分是您永远不需要的。我发现现有的部门相当简单,并且从未发现自己处于我不关心的领域。
如果你真的无法忍受 Java,你可能想要使用 Scala 之类的混合语言。
我非常喜欢依靠我的 IDE 的实时模板功能。(IntelliJ IDEA) 我不记得上一次拼写 StringBuffer 或 System.out.println("...") 是什么时候了。