我有一个看起来像这样的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类则不是这样.
原文地址:https://codeday.me/bug/20190620/1248976.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。