So che non è possibile definire un costruttore in un'interfaccia. Ma mi chiedo perché, perché penso che potrebbe essere molto utile.
Quindi potresti essere sicuro che alcuni campi in una classe sono definiti per ogni implementazione di questa interfaccia.
Ad esempio, considerare la seguente classe di messaggi:
public class MyMessage {
public MyMessage(String receiver) {
this.receiver = receiver;
}
private String receiver;
public void send() {
//some implementation for sending the mssage to the receiver
}
}
Se definisco un'interfaccia per questa classe in modo che io possa avere più classi che implementano l'interfaccia del messaggio, posso solo definire il metodo di invio e non il costruttore. Quindi, come posso garantire che ogni implementazione di questa classe abbia davvero un ricevitore impostato? Se uso un metodo come setReceiver(String receiver)
questo, non posso essere sicuro che questo metodo sia veramente chiamato. Nel costruttore ho potuto assicurarlo.