最近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 があります...
Google は、コレクション ライブラリなど、標準ライブラリのセクションを補完する多数のライブラリもリリースしています。Guice は軽量の DI フレームワークでもあり、私見ですが、その春には習得が容易です。
標準ライブラリは非常に大きいので、すべてを置き換える単一のライブラリを見つけることはできないと思います。個々の問題を解決するライブラリを探すのが最善の策です (つまり、コレクション API が好きではない、オブジェクト プールが必要など)。
Java でユーザー入力を取得するために、これらの 8 行を見てみたいと思います。
個人的には、Java の冗長性は、プログラムが大きくなるにつれて利点になると思います。C や C++ とは異なり、すべてがよりオブジェクト指向の方法で行われます。出力を表すオブジェクトを取得し、それに対して操作を発行します。長期的には、理解と保守がはるかに簡単になります。
これはあちこちで素晴らしい printf() と同じくらい速いですか? いいえ。Python でスクリプトを作成するのと同じくらい便利ですか? もちろん違います。しかし、ラムダの欠如が煩わしいのと同じように、それは Java のような言語を使用するコストの一部です。
エンジニアとしてのあなたの役割は、仕事に最適なツールを選ぶことです。私はほとんどのコーディングを Java で行い、一部は Python で行い、それぞれのトレードオフを受け入れています。
言語を変更することはできませんが、一部の操作を簡素化するライブラリを使用できます (Google や Apache の IO ライブラリなど)。最も煩わしいことのために独自のクラスを作成することもできます。
また、言語と標準ライブラリの冗長性を混同していると思います。ライブラリには多くのものが含まれていますが、そのほとんどは決して必要ではありません。私は既存の部門がかなり単純で、自分が気にしない分野に自分自身を見つけたことは一度もありません。
Java がどうしても苦手な場合は、Scala などのハイブリッド言語を使用することをお勧めします。
私は、IDE のライブ テンプレート機能に頼るのが大好きです。(IntelliJ IDEA) 最後に StringBuffer または System.out.println("...") を綴ったのがいつか思い出せません。