Ich überarbeite den Code, den ich nicht geschrieben habe, der JavaMail verwendet, und habe ein kleines Problem damit zu verstehen, warum das JavaMail-API so entwickelt wurde, wie es ist. Ich habe das Gefühl, wenn ich es verstehe, könnte ich einen besseren Job machen.Warum ist JavaMail Transport.send() eine statische Methode?
Wir nennen:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
Warum Eclipse warnt mich, dass dies:
transport.send(message, message.getAllRecipients());
ein Aufruf einer statischen Methode ist?
Warum erhalte ich ein Transport-Objekt und biete spezifische Einstellungen an, wenn ich dieses Objekt nicht zum Senden der Nachricht verwenden kann? Wie weiß die Transport-Klasse überhaupt, welche Server- und andere Einstellungen zum Senden der Nachricht verwendet werden? Es funktioniert gut, was kaum zu glauben ist. Was wäre, wenn ich Transportobjekte für zwei verschiedene Server instanziiert hätte? Woher sollte es wissen, welche zu verwenden?
Im Zuge diese Frage zu schreiben, habe ich entdeckt, dass ich wirklich anrufen soll:
transport.sendMessage(message, message.getAllRecipients());
Also, was der Zweck der statischen Transport.send() Methode ist? Ist das nur ein schlechtes Design oder gibt es einen Grund dafür?