微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Play Framework中混合使用scala和java

我有一个看起来像这样的Java文件

package AuthorizeNetFingerprint;


class Fingerprint {
    private static Log logger = LogFactory.getLog(Fingerprint.class);

    private long sequence;
    private long timeStamp;
    private String fingerprintHash;

    private Fingerprint() {
    }

    /**
     * Creates a fingerprint with raw data fields.
     * 
     * @param loginID
     * @param transactionKey
     * @param sequence : this number will be concatenated with a random value
     * @param amount
     * @return A Fingerprint object.
     */
    public static String createFingerprint(String loginID,
                    String transactionKey, long sequence, String amount) {
         return transactionKey;
    }
}

我试图像这个scala一样访问它:

val fingerprint = new AuthorizeNetFingerprint.Fingerprint
val x_fp_hash = fingerprint.createFingerprint(x_api_login_id,
                  transaction_key, x_fp_sequence, x_amount)

它给了我这个错误

对象AuthorizeNetFingerprint包中的指纹无法在AuthorizeNetFingerprint包中访问

是否可以在Play Framework中混合使用scala和java?

我做错了什么?

编辑

我需要:
    公共类指纹

代替

class Fingerprint

解决方法:

三件事:

>正如您已经想到的那样,您的指纹类需要公开.
>你已经将Fingerprint的构造函数设为私有;你无法实例化它.
>应该通过Scala中的类伴随对象访问java类中的任何静态方法.

您的示例中的所有Scala代码都应替换为:

val x_fp_hash = AuthorizeNetFingerprint.Fingerprint.createFingerprint(…)

这适用于Scala(2.9.1)控制台,使用sbt(0.11.3)编译.

是的,您可以在Play2应用程序中混合使用Java和Scala,只需将Java代码放在app目录中即可.请注意,java类需要位于相应的包目录中,而Scala类则不是这样.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐