A1はい、可能ですが、どんどん入力する必要があります。
これは確かに本質的に間違っているわけではありませんが、開発者がもっと不満を言うことの1つです。彼ら(そして時々私は自分自身をします)は、Javaが冗長すぎると感じています。
ハードウェアが高速化するにつれて、当初は計算を実行するには高額であった新しいプログラミング言語が実現可能になり、現在ではますます使用され、非常に人気があります。開発者がJavaをもう一度入力しなければならないとき、彼らは、ああ、いや、public static void main
もう一度!すこし。
Java(および一般に静的に型付けされる言語)が実行速度を上げる必要があったことの1つは、実行前(つまり、コンパイル段階)にできるだけ多くの検証を実行することです。
これらの新しいプログラミング言語(特にPythonとRuby)は、同じことを実現するために入力する必要が少ないため、プログラミングを楽しむことができます。
Javaがこれに対して取っている反応は、言語を大きくし、この「シンタックスシュガー」の一部を言語に組み込むことです。それが理由です。
C#のようなプログラミング言語でさえ、開発者コードを少なくするためにこれらの拡張機能(プロパティが頭に浮かぶ)を持っていました。
最後に、これらの追加は言語に役立つと思いますが、互換性を損なうことを避けたり、誰も使用できないほど大きな言語を作成したりするために、慎重に追加する必要があります。
別の方法として、メソッドの名前をより表現しやすくすることもできたと思いますが、Javaの場合は非常に複雑です。おそらく新しい言語で:)。
Map putメソッドのシグネチャは次のようになっている可能性があります:
/**
* Analog to put( Object k, Object v );
*/
public [( Object = k )]=( Object v ) {
}
これにより、メソッド名を次のようにすることができます。 [(key)]=(value)
最終的には括弧を省略します(Rubyや元々Smalltalkのように)。したがって、このメソッドは次のようになります。
Map map = ....
map.["name"]="Oscar";
それは不可能なので([]=
有効なメソッド識別子ではないため)、次のように記述します。
map.put("name","Oscar");
... mmhhは冗長すぎるため、このソリューションを追加することにしました。
もう1つの拡張機能は数値リテラルであるため、次のように入力できます。
int million = 1_000_000;
A2:あなたは何か他のものを手に入れるでしょう。
A3 ( kloffyの回答に関する私のコメントを拡張します)。
今日の時点で、Javaで同じコードを書くことができます。
既存のJavaクラスが許可Stage, Scente, Group, Text, ImageView, Image
されている場合は、次のように入力できます。
new Stage() {{
title = "Group-Nodes-Transformation";
scene = new Scene() {{
width = 600;
height = 600;
content = new Group() {{
content = new Object[] = {
new Circle() {{
centerX = 300;
centerY = 300;
radius = 250;
fill = Color.WHITE;
stroke = Color.BLACK;
}},
new Text() {{
x = 300;
y = 300;
content = "Mr. Duke";
}},
new ImageView() {{
image = new Image() {{
url = "D:\\TEST\\Documents\\duke.png"
width = 50;
height = 50;
}};
}};
};
}};
}};
}};