private Monitor monitor; - jaka jest różnica między takim zapisem, a zapisem na przykład takim: private String monitor
Dziwie się że nikt tego jeszcze tego nie napisał, ale drugi przypadek to choroba zwana stringozą. Wynika ona z tego że teoretycznie każdą informację możesz trzymać jako string więc nie potrzebujesz innych typów. Jednak ja używasz typów innych niż String możesz mieć inteligentny konstruktor czy jak totam się nazywa w OOP. CHodzi o to że nawet jak masz głupi tym Monitor to możesz dodać walidację w konstruktorze lub metodzie statycznej tworzącej obiekt:
class Monitor {
private String name
public Monitor(String name) {
Preconditions.checkArgument(name != null && 3 < name.length && name.length < 666, "Name '" + name + "'' is wrong name");
this name = name;
}
public static Either<String, Monitor> createMonitorEither(String name) {
return (name != null && 3 < name.length && name.length < 666)
? Either.right(new Monitor(name))
: Either.left("Name '" + name + "'' is wrong name");
}
}
Oczywiście są też inne zalety. np to że nie pomylimy szafy z kiblem.
Jeśli mamy metodę
public Room createRoom(String szafa, String kibel)
to można się pomylić i wywołać ją:
createRoom(kibel, szafa);
Jesli jednak mamy typy:
public Room createRoom(Szafa szafa, Kibel kibel)
to pomyłka będzie skutkować błędem kompilacji