如何在Scala中将PasswordAuthentication转换为Authenticator?

时间:2013-07-30 04:08:18

标签: java scala converter

我在scala中编写身份验证方法。这是我的功能:

def getPasswordAuthentication(frm:String, psw:String):Authenticator=
{
    val authen = new PasswordAuthentication(frm, psw)
    return authen.asInstanceOf[Authenticator]
}

当我运行此方法时发生错误。

错误: javax.mail.PasswordAuthentication无法强制转换为javax.mail.Authenticator

这里是原始的Java代码:

 Session.getDefaultInstance(mailProperties, new Authenticator(){
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(smtp_user, smtp_pass);
    }});

然后我修改为Scala。

2 个答案:

答案 0 :(得分:2)

您可以在java代码中正确执行操作,在覆盖getPasswordAuthentication方法后获取Authenticator实例。

def getPasswordAuthentication(uname:String, psw:String):Authenticator=
{
    new Authenticator(){
     def getPasswordAuthentication():PasswordAuthentication = {
        new PasswordAuthentication(uname, psw);
    }}
}

答案 1 :(得分:0)

嗯,你不是吗?它们是两个完全不同的类。但是,您可以使用覆盖getPasswordAuthentication()方法返回Authenticator实例,该方法返回有问题的PasswordAuthentication实例。