Session 为什么JavaMail会话类没有构造函数?
没有构造函数,而是使用两个静态方法: getDefaultInstance(属性p) getDefaultInstance(属性p,身份验证器a) getInstance(属性p) getInstance(属性p,验证器a) 所有上述返回会话 从设计的角度来看,是为了避免调用默认的无参数构造函数吗?Session 为什么JavaMail会话类没有构造函数?,session,constructor,jakarta-mail,Session,Constructor,Jakarta Mail,没有构造函数,而是使用两个静态方法: getDefaultInstance(属性p) getDefaultInstance(属性p,身份验证器a) getInstance(属性p) getInstance(属性p,验证器a) 所有上述返回会话 从设计的角度来看,是为了避免调用默认的无参数构造函数吗? 或者是其他类似于您不能/不想使用构造函数的情况吗?您可以在这里获得一些信息 对于会话类,优点是只需将方法名称更改为getDefaultInstance或getInstance即可更改行为。如果需要的
或者是其他类似于您不能/不想使用构造函数的情况吗?您可以在这里获得一些信息
对于
会话
类,优点是只需将方法名称更改为getDefaultInstance
或getInstance
即可更改行为。如果需要的话,还可以提供一个authenticator。与构造函数相比,静态工厂方法有两个关键优势:
虽然JavaMail没有利用第一个会话(实际上会话是最终的),但它确实使用第二个会话为getDefaultInstance返回相同的会话对象。虽然这样做是为了支持一个特定的用例,但事实证明,这是一个坏主意,会绊倒很多人,如前所述。查看工厂模式以了解更多信息。可以使用构造函数来完成,例如Session(),Session(Authen)为默认值,Session(Prop),Session(Prop,Authen),它适合于类编程IMO。