1

我正在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。

4

2 回答 2

2

你可以在你的java代码中精确地做你正在做的事情,在覆盖getPasswordAuthentication方法后获取一个Authenticator的实例。

def getPasswordAuthentication(uname:String, psw:String):Authenticator=
{
    new Authenticator(){
     def getPasswordAuthentication():PasswordAuthentication = {
        new PasswordAuthentication(uname, psw);
    }}
}
于 2013-07-30T04:29:56.060 回答
0

嗯,你不知道吗?它们是两个完全不同的类。但是,您可以返回一个带有重写getPasswordAuthentication()方法的 Authenticator 实例,该方法返回有问题的 PasswordAuthentication 实例。

于 2013-07-30T04:12:55.140 回答