Jak rikam, ani jedno z uvadenych reseni mi neprijde idealni. Nebyl by problem funkcionalitu podobnou Ruby pridat pomoci anotaci:
@Read
private int size;
@Read @Write
private String name;
... ale jak rikam. Nejsem moc velky priznivce takoveho postupu. Pak je otazka, jestli zapouzdreni pomoci "private" ma vubec vyznam (u dynamickych jazyku vlastne neexistuje, ale Java diky bohu neni dynamicka).
Dalsi dulezity aspekt je ten, ze podle principu OOP byste spravne mel mit na vsechno interfacy, kvuli oddeleni implementace. Coz zrovna properties neumoznuji. Proto se podle me opravdu hodi jen do mensich projektu a/nebo scriptovacich jazyku. U vetrsich projektu casti existuje API (hlavne interfacy) uplne oddelene od implementace (tridy). Obe casti se pak spojuji pomoci depencency injection (usnadneni testovani a nasazeni).
Myslim, ze properties jsou v _Jave_ na skodu a prinesli by jen zbytecnou funkcionalitu do jazyka. Myslim, ze z dlouhodobeho hlediska nejsou pro Javu perspektivni. Ve scriptovacich jazycich podle me vyznam maji.

