Ho la seguente classe:
public class Project {
private int id;
private String name;
public Project(int id, String name, Date creationDate, int fps, List<String> frames) {
if(name == null ){
throw new NullPointerException("Name can't be null");
}
if(id == 0 ){
throw new IllegalArgumentException("id can't be zero");
}
this.name = name;
this.id = id;
}
private Project(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Ho tre domande:
-
Uso i setter di classe invece di impostare direttamente i campi. Uno dei motivi per cui l'ho impostato direttamente è che nel codice i setter non sono definitivi e potrebbero essere ignorati.
-
Se il modo giusto è impostarlo direttamente e voglio assicurarmi che il nome archiviato non sia nullo sempre. Dovrei fornire due assegni, uno nel costruttore e uno nel setter.
-
Ho letto in java efficace che dovrei usare
NullPointerException
per i parametri null. Dovrei usareIllegalArgumentException
per altri controlli, come l'id nell'esempio.