Sto revisionando il codice che non ho scritto che utilizza JavaMail e avendo un po 'di problemi a capire perché l'API JavaMail è progettata così com'è. Ho la sensazione che se capissi, potrei fare un lavoro migliore.Perché JavaMail Transport.send() è un metodo statico?
Noi chiamiamo:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
Allora perché mi avverte che questo Eclipse:
transport.send(message, message.getAllRecipients());
è una chiamata ad un metodo statico?
Perché ottengo un oggetto Transport e fornisco impostazioni specifiche se non riesco a utilizzare quell'oggetto per inviare il messaggio? In che modo la classe Transport sa quali server e altre impostazioni utilizzare per inviare il messaggio? Funziona bene, è difficile da credere. Cosa succede se ho creato oggetti di trasporto istanziati per due server diversi; come saprebbe quale usare?
Nel corso della stesura di questa domanda, ho scoperto che in realtà dovrebbe essere chiamando:
transport.sendMessage(message, message.getAllRecipients());
Allora, qual è lo scopo del metodo statico Transport.send()? È solo un design scadente, o c'è una ragione per cui è così?