在Play Framework中混合使用scala和java [英] Mixing scala and java in Play Framework

查看:263
本文介绍了在Play Framework中混合使用scala和java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下所示的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;
    }
}

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

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)

它给了我这个错误:

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

object Fingerprint in package AuthorizeNetFingerprint cannot be accessed in package AuthorizeNetFingerprint

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

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

我做错了什么?

编辑

我需要:
公共类指纹

I needed: public class Fingerprint

而不是

class Fingerprint


推荐答案

三件事:


  1. 正如您已经想到的那样,您的指纹课程需要公开。

  2. 您已经知道了de Fingerprint的构造函数私有;你无法实例化它。

  3. Java类中的任何静态方法都应该通过Scala中的类伴随对象来访问。

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

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

val x_fp_hash = AuthorizeNetFingerprint.Fingerprint.createFingerprint(…)

这适用于Scala(2.9.1)控制台,使用sbt(0.11.3)。

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

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

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.

这篇关于在Play Framework中混合使用scala和java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆