我正在修改我没有编写的使用 JavaMail 的代码,并且在理解为什么 JavaMail API 是这样设计的方面遇到了一些困难。我有一种感觉,如果我理解的话,我可以做得更好。
We call:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
那么为什么 Eclipse 会警告我:
transport.send(message, message.getAllRecipients());
是对静态方法的调用吗?
如果我无法使用 Transport 对象发送消息,为什么我要获取 Transport 对象并提供特定于它的设置? Transport 类如何知道使用什么服务器和其他设置来发送消息?它运行良好,这令人难以置信。如果我为两个不同的服务器实例化 Transport 对象会怎样?它怎么知道该使用哪一个?
在写这个问题的过程中,我发现我真的应该打电话:
transport.sendMessage(message, message.getAllRecipients());
那么静态 Transport.send() 方法的用途是什么?这只是糟糕的设计,还是有原因?
Transport.send()
基本上是一种方便的方法。是的,如果您自己管理Transport
实例,调用sendMessage()
.
我不确定我是否认为这是糟糕的设计,因为您经常不关心管理发送和监控传输的细节。破解打开send()
方法来看看它对你有什么作用。命名或放置此方法的其他方式可能会稍微好一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)