Psat acessory rucne neni potreba, zvlada to generovat IDE.
Psát accessory není vůbec potřeba. Stačí umět používat privátní atributy.
To funguje jak presne? Napr. vystup z Twitter API, to jako dostanu objekt tweet s privatnimi fieldy a budu s nim delat co?
Celkove psat v Jave immutable tridy je za trest. Co jsem vygooglil, tak se to standardne dela hromadou accessoru.
public class Foo {
private final int x, y;
private final String name;
public Foo(final int x, final int y, final String name){
this.x = x;
this.y = y;
this.name = name;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public String getName(){
return name;
}
}
Pak jsem nasel jeste jednu moznost, nevim jestli se pouziva (pripomina closures).
public interface Foo2 {
int getX();
int getY();
String getName();
}
public class Foo2Creator {
public static Foo2 create(final int x, final int y, final String name){
return new Foo2(){
public int getX(){
return x;
}
public int getY(){
return y;
}
public String getName(){
return name;
}
};
}
}
Neprijde mi o moc lepsi.
Posledni co me napada je uplne vypustit gettery a prejit na verejne final fieldy. Co ctu, tak to ale moc Java-like neni (a u verejnych API uz vubec ne).
Priklad reseni ve Scale:
case class Foo3(x: Int, y: Int, name: String)
Krome strucnosti dostanu navic oproti Jave porovnani, hash, extraktor (coz ale v Java svete asi moc nepouziju) a predevsim copy metodu.
Samozrejme je vice nez pravdepodobne, ze existuje nejaky lepsi pristup, precejen se Javou (ani Scalou) nezivim.