为什么可以';我不能将Scala对象分配给Java变量吗?

为什么可以';我不能将Scala对象分配给Java变量吗?,java,scala,object,Java,Scala,Object,我有一个单片Java应用程序,我想移植到更新的技术,我想在任何有意义的地方应用Scala 现在,我将一个相当大的java单例类实现转换为Scala对象 在另一个类中,我曾经这样做(JAVA): 现在我想做以下几点: public class MyOtherClass { protected MySCALAClass myClass; public MyOtherClass() { myClass = MySC

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

现在,我将一个相当大的java单例类实现转换为Scala对象

在另一个类中,我曾经这样做(JAVA):

现在我想做以下几点:

   public class MyOtherClass 
   {
        protected MySCALAClass myClass;

        public MyOtherClass()
        {
            myClass = MySCALAClass$.MODULE$;
        }
   }
但这不起作用。它说:

必需的MyScalClass,找到的MyScalClass$

我还尝试创建一个小函数

def getInstance() = this
当然,这也会产生同样的问题

有什么想法吗?我搜索了这个主题,我发现如果您只想调用对象的方法,这不是一个问题,但是我需要重写很多很多对“myClass”对象的调用,甚至需要测试它


编辑:我完全知道我可以将每次对“myClass”的调用都重命名为“MyCalClass”,但这并不是真正的修复方法,只是一种变通方法,对于一个大项目来说,这很乏味。

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

见以下问题:


singleton类(
myscalass$
在您的例子中)不是原始类(
myscalass
)的子类,因此singleton对象(
myscalass$.MODULE$
)也不是它的实例。

您可能需要将
myClass
变量声明为
受保护的myscalass$myClass
def getInstance() = this