Java SE7(以下Java7)ではついにプロパティ構文が採用される見込みとなりましたが、構文をどうするかで二転三転していました。最近ですがProperty Spec(draft 3)というのが出てきて、ちょっと盛り上がっています。
今までのJavaと大きく変わる点として「ローカルキーワード」というのが採用になる点です。ローカルキーワードというのは予約語ではないのですが、文脈によって特別な意味をもつキーワードです。Java SE5やJ2SE1.4ではenumやassertという予約語が増えて混乱が発生しましたが、今度からキーワードが文脈依存になるため、大きな問題にはならないでしょう。
プロパティ構文で予定されているローカルキーワードには、get/set/bound/propertyが予定されていますが、プロパティ構文内でのみ有効なローカルキーワードであるため、List#get(int)のようなメソッドと名前の衝突を起こす事はありません。
プロパティの定義方法は以下のような構文が予定されています。
このような構文でプロパティを定義できるわけです。get set;はエラーとなります。入出力方法変更したい場合は以下のように書く事が出来ます。
boundキーワードについては省略しますが、プロパティの変更時に委譲用のメソッドに処理が委譲されます。
そして、プロパティに対するアクセス方法ですが、
のように書く事が出来ます。一時期はアロー演算子も検討されていましたが、結局なじみのあるピリオドが採用になりそうです。さらにプロパティオブジェクトの参照のために「#演算子」も検討されています。
のように使います。リフレクションのシンタックスシュガーっぽいですね。一時メソッド参照の話もありましたが、似たような構文でメソッドを参照できるのでしょうか。リフレクションはコストが高いのは仕方がないにせよ、手続きが面倒です。こういうシンタックスシュガーが採用になるのはありがたいですね。
ちなみにJavadoc内では#はクラスとメンバを区切る為に昔から使われている記述方法です。