我正在修改我沒有編寫使用JavaMail的代碼,並且在理解爲什麼JavaMail API的設計方式方面有點麻煩。我有這樣的感覺,如果我明白了,我可以做得更好。爲什麼JavaMail Transport.send()是一個靜態方法?
我們呼籲:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
那麼,爲什麼Eclipse的警告我說,這:
transport.send(message, message.getAllRecipients());
是一個靜態方法的調用?
如果我無法使用該對象發送消息,爲什麼我會獲取傳輸對象並提供特定的設置? Transport類甚至知道用什麼服務器和其他設置來發送消息?它工作正常,很難相信。如果我爲兩個不同的服務器實例化Transport對象,該怎麼辦?它如何知道使用哪一個?
在寫這個問題的過程中,我發現,我真的應該叫:
transport.sendMessage(message, message.getAllRecipients());
那麼什麼是靜態Transport.send()方法的目的是什麼?這僅僅是糟糕的設計,還是有這樣的理由?