我正在修改我没有编写的使用 JavaMail 的代码,并且在理解 JavaMail API 的设计方式时遇到了一些麻烦。我有一种感觉,如果我理解了,我可以做得更好。
我们称之为:
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() 方法的目的是什么?这只是糟糕的设计,还是有这样的原因?