为什么我不能将Scala对象分配给Java变量?

时间:2015-05-15 18:28:44

标签: java scala object

我有这个单片Java应用程序,我想移植到更新的技术,我想在任何有意义的地方应用Scala。

现在我将一个相当庞大的java-singleton类实现转换为Scala对象。

在我曾经做过的另一个课程中(JAVA):

   public class MyOtherClass 
   {
        protected MyClass myClass;

        public MyOtherClass()
        {
            myClass = MyClass.getInstance();
        }
   }

现在我想做以下事情:

   public class MyOtherClass 
   {
        protected MySCALAClass myClass;

        public MyOtherClass()
        {
            myClass = MySCALAClass$.MODULE$;
        }
   }

但这不起作用。它说:

  

需要MyScalaClass,找到MyScalaClass $

我还尝试创建一个小函数

def getInstance() = this

但当然这会产生同样的问题。

有什么想法吗?我已经搜索过这个主题了,如果你只是想调用对象的方法,我会看到它不是一个问题,但我需要重写很多很多调用“myClass”的对象来测试它。

编辑:我完全清楚我可以将对“myClass”的每次调用重命名为“MySCALAClass”,但这不是真正的修复,只是一种解决方法,对于一个大项目来说这很乏味

1 个答案:

答案 0 :(得分:4)

我认为@neuronaut的评论是正确的。

请参阅以下问题:

单例类(在您的情况下为MySCALAClass$)不是原始类(MySCALAClass)的子类,因此单例对象(MySCALAClass$.MODULE$)也不是它的实例