2009-09-03 9 views
0

私は最近Javaに入りました。私は動的言語の背景を持っており、最終的に人々がJavaの冗長さに不平を言う理由を理解しています。この問題に対処するクラスライブラリはありますか?私は多くの場合、Javaでユーザ入力を得るために必要な8行ほどではなく、String text = someClass.stdin()のようなものを入力します。Javaの非常に冗長なクラスライブラリ

答えて

5

Apache Commonsライブラリ(特にLang、IOおよびCollections)の中には、特定のコアJava APIの冗長性を隠すように設計されているものがあります。しかし、Java言語の冗長性は、私たちはすべて固執しています。

+0

これは私が必要とするもののように見えます。 –

2

は確かにGoogleはまた、コレクションライブラリのように、標準ライブラリのセクションを補完するライブラリの数をリリースしました

2

JPythonの、JRubyの、Clojureは、Scalaの...いくつかあります。 Guiceはまた、IMHOがその春を学ぶのが簡単な素晴らしい軽量DIフレームワークです。

標準ライブラリは非常に大きいので、すべてを置き換える単一のライブラリがないと思います。

import java.util.Scanner; 
... 
System.out.print("Enter your name: "); 
String userName = new Scanner(System.in).nextLine(); 

または:あなたが最善の策は、個々の問題を解決するためのライブラリを探すことですねJavaの5では

6

(つまり、私はコレクションAPIを好きではない、私は、オブジェクトプールなどが必要) 、Java 6:

String userName = System.console().readLine("Enter your name: "); 
+2

+1素晴らしい点は、標準ライブラリの最新版がまだそれに対処していないことを確認してください。 – Yishai

+1

Java 6へのアップグレードが完了しました。禅のような洞察力をありがとう:時にはあなたが探しているものが既にそこにある。 –

1

私はこれらの8行をJavaでユーザ入力することに興味があります。

私は、あなたのプログラムが大きくなるにつれて、Javaの冗長さは資産になると個人的に思っています。 CやC++とは異なり、すべてがオブジェクト指向のやり方で行われます。出力を表すオブジェクトを取得した後、そのオブジェクトに対して操作を発行します。長期的に理解して維持するのがずっと簡単です。

ここは素敵なprintf()と同じくらい簡単ですか?いいえ、Pythonのスクリプトと同じくらい便利ですか?もちろん違います。しかし、それはJavaのような言語を使用するコストの一部です.Lambdasの不足が迷惑であるように。

エンジニアとして、あなたの役割は仕事に最適なツールを選ぶことです。私はPythonでPythonでコーディングし、Pythonでコーディングを行い、それぞれのトレードオフを受け入れます。

言語を変更することはできませんが、一部の操作(G​​oogleやApacheのIOライブラリなど)を簡略化するライブラリを使用できます。あなたに最も迷惑をかけるもののための独自のクラスを書くこともできます。

また、言語と標準ライブラリの冗長さを混乱させると思います。ライブラリにはたくさんのものが含まれていますが、そのほとんどは必要としません。私は既存の部門をかなり簡単に見つけ、気にしなかった分野で自分自身を見つけたことはありませんでした。

本当にJavaに耐えられない場合は、Scalaのようなハイブリッド言語を使用することができます。

0

私はIDEのライブテンプレート機能に傾いているのは大好きです。 (IntelliJ IDEA)StringBufferまたはSystem.out.println( "...")を最後に覚えた時は思い出せません。

関連する問題