8

たとえば C# のプロパティのシンタックス シュガー:

private int x;

public int X{
    get { return x; }
    set { x = value; }
}

または単に

 public int X{ get; set; }

Java に逐語的な文字列がありません... "C:\\My Documents\\" ではなく @"C:\My Documents\"

Javaにはもっと「シュガー」が必要だと思いますか? 次のJavaバージョンでシュガーが登場することを知っている人はいますか?

4

15 に答える 15

17

「シンタックス シュガーはセミコロンの癌を引き起こす。」

-- アラン・ペルリス プログラミングのエピグラム。

于 2008-12-19T18:37:40.643 に答える
14

Groovyが必要なようですね...どうやらプロパティは開発中ですが、Java 7 にはありません (@erickson がコメントで親切に修正してくれました)。

Groovy には素晴らしい string sugarがあります。

于 2008-12-19T18:23:31.000 に答える
14

Java の哲学に必ずしも同意するわけではありませんが、Java に多くの構文糖衣を追加することは、Java の哲学に反することになると思います。Java は、非常に単純で、構成要素がほとんどない言語について簡単に推論できる言語であると考えられており、プログラミング コミュニティにおける最小公分母の共通言語のようなものです。それは主に、C++ の複雑さに対する反応でした。メモリセーフな言語にするために必要なもの (主にガベージ コレクション) を超えて、"魔法" はほとんど含まれていないはずです。

かなり高性能で静的に型付けされた言語でより多くの砂糖などが必要な場合は、Java はあなたにとって間違った言語であると言えます。おそらく、C# か D を使用したほうがよいでしょう。

于 2008-12-19T18:30:41.280 に答える
6

また、ここ数年は Java と C# の両方で開発を行ってきましたが、C# は表現力と強力な言語構造に関して優れた言語であることがわかりました。Java 言語は、C# と同じ程度の変更や更新を受けることはなく、少なくとも同じペースではありません。Java を大幅に更新する必要があるというわけではありませんが、Java プラットフォームには強力で表現力豊かな静的型付け言語が必要です。Scala は、Java 開発者が通常の Java では対応できない場合に切り替えることができる、この代替言語に発展すると思います。

C# は非常に優れた言語です。おそらく最近では「最高の」静的型付け言語ですが、Java は依然として優れたプラットフォームであると私は考えています。プラットフォームとして Java が好きで、言語として C# が好きです。

于 2008-12-19T18:43:59.100 に答える
4

Devoxx 2008 での Mark Reinhold の講演によると、プロパティ サポートは Java 7 では Java に追加されません。

http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html

Java 7 アイデアのプロパティの詳細については、こちらをご覧ください。

http://tech.puredanger.com/java7#property

于 2008-12-19T21:55:28.823 に答える
3

もう一度大きなものにJavaを使用すると、別のコンパイラからの出力言語になります。

于 2008-12-19T20:16:21.940 に答える
3

プロパティは優れていますが、Java ではありません。私は真剣にJavabean仕様がそのドアを何年も前に閉じたと思います. 必要とされるシンタックス シュガーのより明確なケースがあると思います。

  • デリゲート/クロージャがないため、内部クラスが使用されています。現在の構文は地獄のものです。
  • 一次言語構造、つまりメソッドのデータ型としてのメソッド。
  • ジェネリックによる型推論
  • リフレクション API でのジェネリックの実行時の存在。
  • イベント
于 2008-12-19T19:54:37.383 に答える
2

それは古い学校の C# です。最近はそうです

public int X { get; set; }
于 2008-12-19T18:10:49.357 に答える
1

これにかなり役立ついくつかの注釈 (および注釈プロセッサ) を作成しました。

http://code.google.com/p/javadude/wiki/Annotationsを参照

例えば:

@Bean(
    properties={
        @Property(name="name", bound=true), // String is default type
        @Property(name="age", type=int.class, bound=true)
    }
)
public class Foo extends FooGen {}

これにより、フィールドと get/set メソッドを含む FooGen が生成され、それらがバインドされます (これはオプションです)。これらを使ってできる楽しいことは他にもたくさんあります。

注: 現在、さまざまな「オーバーライド」オプションを非推奨にするいくつかの調整を行っています。

楽しみ、

-- スコット

于 2008-12-31T22:57:02.623 に答える
1

砂糖は歯に悪い。シンタックス シュガーは脳に悪い。

于 2008-12-19T18:16:48.110 に答える
1

これは必ずしも必要ではありません。

単純なエディター マクロが機能する可能性があります。

prop int x -->

private int x;

public int getX(){
   return x;
}
public void setX(int val){ 
   x = val;
}

編集:(コメントに応じて)

これはどのように読みにくいのですか:

private int x;

public int X{
    get { return x; }
    set { x = value; }
}
于 2008-12-19T18:27:12.053 に答える
0

多くの人と同じように、私はJava 1.4で書かれたアプリケーションを管理することに固執しています(多くの場合、1.5への移行は1つの方法です)。したがって、Java 7または8に新機能が追加されたとしても、それらを使用することはできません...とにかく構文糖衣構文は優れていますが、コードの記述、読み取り、分析に役立ちます。

于 2008-12-19T20:19:58.267 に答える
0

Java プラットフォームは、膨大な量のプログラミング言語を採用しています。より多くのシンタックス シュガーが必要な場合は、Groovy や (J)Ruby などの別の言語を使用できます。それは引き続き jvm で実行され、他の Java ライブラリと連携します。(C# の実装もあると思います ;)

于 2008-12-19T22:00:43.400 に答える
0

Java が実装するのに非常に適していることの 1 つは、refパラメーターとout パラメーターに相当するものです。

于 2008-12-19T18:49:12.617 に答える
0

私は「シンタックス シュガー」がそのままでは好きではありません。主な理由は、これはもう 1 つ学ぶべきことであり、最終的に悪用される可能性が高いからです。私はゲッターとセッターを自分で作成する煩わしさに呪いをかけてきましたが、それらをできるだけ簡単に作成したい理由を理解していますが、仕事をするための構文よりも@Get、 、@Setおよび注釈を見たいと思っています。@GetSet

于 2008-12-19T20:28:39.607 に答える