このようなことができます設定のプロパティ:のCustomerIdと呼ばれる自動プロパティを設定しますが、Javaで同様のものがあった場合、私は思っていたJavaには自動プロパティがありますか? C#で
public int CustomerId {get;set;}
?
このようなことができます設定のプロパティ:のCustomerIdと呼ばれる自動プロパティを設定しますが、Javaで同様のものがあった場合、私は思っていたJavaには自動プロパティがありますか? C#で
public int CustomerId {get;set;}
?
いいえ、Javaは現時点では何も似ていません。 Hackでは、Javaのプロパティは、C#のようにコンパイラが本当に理解するのではなく、ほとんどがget/setメソッドの慣例にすぎません。ツールとライブラリはget/setパターンを認識しますが、言語はそのパターンを認識しません。 (Javaの将来のバージョンでは、より正式なサポートが可能になる可能性があります。)
GroovyなどのJavaのような言語の中には、自動プロパティ生成があります。
C#は "Javaのような"言語です。 –
@Tom:はい、いくつかの点ではあります。私はそれが関係しているとは確信していません...それは確かに私が書いたものを無効にしません。 –
@JonSkeet:「真に理解された」ということを明確にすることはできますか?私はC#のものは、同じ種類のもの、つまり読み書きする2つの機能を持つフィールドのための構文的な砂糖だと思ったのですか? – Carlos
いいえ、Javaではこのようなことはありません。
しかし、Eclipseでは、[ソース]> [ゲッター/セッターの生成]でフィールドのゲッター/セッターメソッドを自動的に実装できます。
また、Java言語自体でProject Lombok
ないからアノテーションを使って、簡単にこれを行うことができます。しかし、それを提供するライブラリが少なくとも1つあります。参照:http://projectlombok.org/(または複数の特定:http://projectlombok.org/features/GetterSetter.html)
良いです。「@ cleanup」のような他の注釈(.net devsの属性)があります@ toString' 'NonNull' ... –
http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm
IntegerProperty num = new SimpleIntegerProperty(666);
System.out.println(num.getValue());
"Special attributes/properties" instead of getter/setter in Java to avoid boiler plate code
Javaは「低レベルの高水準」言語として説明しています。これは、メモリ管理、オブジェクト指向などの高レベル言語です。しかし、コンパイラによって「余分な」ものはほとんど実装されていないという意味で低レベルです。プロパティのような最も単純なパターンでさえ、プログラマが手動で行う必要があります(私はそこに例外があると確信しています)。 (たぶん「純粋な」OOP言語ですか?)これは良いことと悪いことです。私がJavaを第一言語として提案する理由の1つは、あまりにも複雑でなくてもOOPの基本を教えるからです。 –