2017-04-04 49 views
1

我正在使用用Scala编写的Reactive RabbitMQ库。在Java中使用Scala对象

我碰到这个结构来:

public interface DeliveryMode { } 

public final class Persistent { 
    public static String toString() { 
     return Persistent$.MODULE$.toString(); 
    } 

    // Other static functions. 
} 

public final class Persistent$ implements DeliveryMode, Product, Serializable { 
    public static final Persistent$ MODULE$; 

    static { 
     new Persistent$(); 
    } 

    // Other code 
    public String toString() { 
     return "Persistent"; 
    } 

    private Persistent$() { 
     MODULE$ = this; 
     class.$init$(this); 
    } 
} 

如果他们想访问接受DeliveryMode

public Message(DeliveryMode mode) {} 

他们只是通过在斯卡拉

Message(Persistent); 

可以这样一个功能类型也用于Java?

回答

4

的代码是在java中,所以我看不出其中的混乱。当然,它可以像你期望的那样从java中运行。类Persistent $ implements DeliveryMode有一个名为MODULE $的静态实例。

Message(Persistent$.MODULE$); 

假设持续$被正确导入。

+0

我认为OP可能会与'$'混淆?它是类和变量名称的合法字符。 –