Je suis en train de réviser du code que je n'ai pas écrit qui utilise JavaMail, et qui a un peu de mal à comprendre pourquoi l'API JavaMail est conçue comme elle est. J'ai le sentiment que si je comprenais, je pourrais faire un meilleur travail.Pourquoi JavaMail Transport.send() est une méthode statique?
Nous appelons:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
Alors pourquoi me prévenir Eclipse que ceci:
transport.send(message, message.getAllRecipients());
est un appel à une méthode statique? Pourquoi est-ce que j'obtiens un objet Transport et que je fournis des paramètres qui lui sont spécifiques si je ne peux pas utiliser cet objet pour envoyer le message? Comment la classe Transport sait-elle même quel serveur et d'autres paramètres utiliser pour envoyer le message? Cela fonctionne bien, ce qui est difficile à croire. Que se passerait-il si j'avais instancié des objets de transport pour deux serveurs différents; comment pourrait-il savoir lequel utiliser?
Au cours de la rédaction de cette question, j'ai découvert que je devrais vraiment Vocation:
transport.sendMessage(message, message.getAllRecipients());
Quel est donc le but de la méthode Transport.send() statique? Est-ce juste une mauvaise conception, ou y a-t-il une raison à cela?