0

我最近接触了 Java。我有动态语言的背景,我终于弄清楚为什么人们抱怨 Java 的冗长。有没有解决这个问题的类库?我宁愿键入类似的东西,String text = someClass.stdin()而不是在 Java 中获取用户输入所需的 8 行左右。

4

6 回答 6

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: ");
于 2009-09-03T18:17:42.103 回答
5

一些Apache Commons库(特别是 Lang、IO 和 Collections)旨在隐藏某些核心 Java API 的冗长性。然而,我们都被 Java 语言的冗长所困扰。

于 2009-09-03T18:10:37.690 回答
2

当然有几个 JPython、JRuby、Clojure、Scala ......

于 2009-09-03T18:13:12.143 回答
2

谷歌还发布了一些库来补充标准库的某些部分,比如集合库。Guice 也是一个不错的轻量级 DI 框架,恕我直言,那个春天更容易学习。

标准库是如此之大,我认为您不会找到一个可以替代所有内容的库。最好的办法是寻找解决个别问题的库(即我不喜欢 Collections API,我需要一个对象池等)

于 2009-09-03T18:15:17.663 回答
1

我有兴趣看到这 8 行以获取 Java 中的用户输入。

我个人认为随着您的程序变得更大,Java 的冗长成为一种资产。与 C 和 C++ 不同,一切都以更加面向对象的方式完成。你得到代表你的输出的对象,然后你对它发出一个操作,等等。从长远来看,更容易理解和维护。

这和这里那里的一个不错的 printf() 一样快吗?不。它和 Python 中的脚本一样方便吗?当然不是。但这是使用像 Java 这样的语言的一部分成本,就像缺少 Lambdas 很烦人一样。

作为工程师,您的职责是为工作选择最佳工具。我的大部分编码都是在 Java 中完成的,有些是在 Python 中完成的,我接受了两者之间的权衡。

虽然您无法更改语言,但您可以使用简化某些操作的库(例如,Google 或 Apache 的 IO 库)。你也可以为最让你烦恼的事情编写自己的类。

我还认为您混淆了语言和标准库的冗长。该库包含很多东西,其中大部分是您永远不需要的。我发现现有的部门相当简单,并且从未发现自己处于我不关心的领域。

如果你真的无法忍受 Java,你可能想要使用 Scala 之类的混合语言。

于 2009-09-03T18:30:39.730 回答
0

我非常喜欢依靠我的 IDE 的实时模板功能。(IntelliJ IDEA) 我不记得上一次拼写 StringBuffer 或 System.out.println("...") 是什么时候了。

于 2009-09-03T18:44:19.510 回答