2009-11-08 12 views
18

このようなことができます設定のプロパティ:のCustomerIdと呼ばれる自動プロパティを設定しますが、Javaで同様のものがあった場合、私は思っていたJavaには自動プロパティがありますか? C#で

public int CustomerId {get;set;} 

+0

Javaは「低レベルの高水準」言語として説明しています。これは、メモリ管理、オブジェクト指向などの高レベル言語です。しかし、コンパイラによって「余分な」ものはほとんど実装されていないという意味で低レベルです。プロパティのような最も単純なパターンでさえ、プログラマが手動で行う必要があります(私はそこに例外があると確信しています)。 (たぶん「純粋な」OOP言語ですか?)これは良いことと悪いことです。私がJavaを第一言語として提案する理由の1つは、あまりにも複雑でなくてもOOPの基本を教えるからです。 –

答えて

26

いいえ、Javaは現時点では何も似ていません。 Hackでは、Javaのプロパティは、C#のようにコンパイラが本当に理解するのではなく、ほとんどがget/setメソッドの慣例にすぎません。ツールとライブラリはget/setパターンを認識しますが、言語はそのパターンを認識しません。 (Javaの将来のバージョンでは、より正式なサポートが可能になる可能性があります。)

GroovyなどのJavaのような言語の中には、自動プロパティ生成があります。

+0

C#は "Javaのような"言語です。 –

+9

@Tom:はい、いくつかの点ではあります。私はそれが関係しているとは確信していません...それは確かに私が書いたものを無効にしません。 –

+0

@JonSkeet:「真に理解された」ということを明確にすることはできますか?私はC#のものは、同じ種類のもの、つまり読み書きする2つの機能を持つフィールドのための構文的な砂糖だと思ったのですか? – Carlos

12

いいえ、Javaではこのようなことはありません。

しかし、Eclipseでは、[ソース]> [ゲッター/セッターの生成]でフィールドのゲッター/セッターメソッドを自動的に実装できます。

6

ないからアノテーションを使って、簡単にこれを行うことができます。しかし、それを提供するライブラリが少なくとも1つあります。参照:http://projectlombok.org/(または複数の特定:http://projectlombok.org/features/GetterSetter.html

+0

良いです。「@ cleanup」のような他の注釈(.net devsの属性)があります@ toString' 'NonNull' ... –

関連する問題