scala java混合使用,在Play Framework中混合使用scala和java

I have a Java file that looks like this:

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;

}

}

And I am trying to access it like this scala:

val fingerprint = new AuthorizeNetFingerprint.Fingerprint

val x_fp_hash = fingerprint.createFingerprint(x_api_login_id,

transaction_key, x_fp_sequence, x_amount)

And it gives me this error:

object Fingerprint in package AuthorizeNetFingerprint cannot be accessed in package AuthorizeNetFingerprint

Is it possible to mix scala and java in Play Framework?

What I am doing wrong?

EDIT

I needed:

public class Fingerprint

instead of

class Fingerprint

解决方案

Three things:

As you've already figured out, your Fingerprint class needs to be public.

You've made Fingerprint's constructor private; you can't instantiate it.

Any static methods in a Java class should be accessed through the class' companion object in Scala.

All the Scala code in your example should be replaced by:

val x_fp_hash = AuthorizeNetFingerprint.Fingerprint.createFingerprint(…)

This works in the Scala (2.9.1) console, compiled with sbt (0.11.3).

Yes, you can mix Java and Scala in a Play2 application, just put the Java code in the app directory. Note that Java classes need to be in their corresponding package directories, which is not the case for Scala classes.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值