当前位置: 首页 > 面试题库 >

从java访问案例对象(scala)

和斌
2023-03-14
问题内容

我试图将一些Scala代码注入到现有的Java应用程序中。(所以,话说回来,我想要更多的乐趣)。

我在Scala中创建一个单例的东西

ScalaPower.scala

    package org.fun
    class ScalaPower
    object ScalaPower{
      def showMyPower(time:Int) = {
        (0 to time-1).mkString(", ")
      }
    }

现在,在OldJava.java中

class OldJava {
  public void demo(){
    System.out.println(?)
  }
}

我应该填写什么?以便Java调用showMyPower方法?我尝试了两者
org.fun.ScalaPower.showMyPower(10)org.fun.ScalaPower.getInstance().showMyPower(10)但没有任何效果。

(使用Jad反编译类文件,除了胡说八道之外,什么都没给我显示。)

编辑 我删除了class ScalaPower声明,scala产生了预期的静态方法。(呼吁org.fun.ScalaPower.showMyPower(10)工作)。

想知道这是否是scala编译器中的错误


问题答案:

我认为这间接地涵盖了它:

伴侣对象和Java静态方法

关于伴随对象,还有另一件事要了解。每当您定义要用作应用程序入口点的主要方法时,Scala都会要求您将其放入对象中。但是,在撰写本文时,不能在同伴对象中定义主要方法。由于生成的代码中有实现细节,因此JVM找不到主要方法。以后的版本中可能会解决此问题。现在,您必须在单例对象(即“非同伴”对象)[ScalaTips]中定义任何主要方法。考虑以下尝试定义main的简单Person类和伴随对象的示例。

如在此处找到:http :
//programming-scala.labs.oreilly.com/ch06.html

简而言之,因为您的对象是一个伴随对象(具有伴随类),所以您不能像预期的那样调用它。如您所见,如果您摆脱了该类,它将起作用。



 类似资料:
  • 问题内容: 就像是 这是我想象的格式,但事实并非如此。什么会退回到对象的父级? 问题答案: JavaScript本身不提供此功能。而且我怀疑您是否可以创建这种类型的功能。例如: 鲍比属于谁?

  • 带有同伴对象的简单示例类 值测试可以通过访问,但如何从MyClass的实例访问?如果我有,那么我如何从sample访问测试?不正确....有没有办法? Java,C++,python等都有很简单的解决方案...(我将为每个有帮助的is提供代码示例),我认为kotlin会有一个比使用Java更好的解决方案。 对于在没有对象实例(如工厂)的情况下访问类属性,kotlin companion objec

  • 我正在尝试创建一个连接四的GUI。 我有一个类Gui,它创建了一个板(一个数组[][]ints)和一个方法move,它接受player(int)和column(int)以及一个检查是否有赢家的方法。 我用gridLayout创建了一个gui,我有一行按钮和7个JLabel数组(这是一个空槽的ImageIcon)。如果玩家选择了一个特定数组的最下面的JLabel列,我现在需要访问该列。 我在一个循环

  • 问题内容: 如何Foo从Java访问包对象中包含的对象? 问题答案: 也许从Scala 2.8.1开始,这已经发生了变化,但是该提议不起作用。您必须使用。 对于对象,方法等,它有所不同。考虑到scala类: 您可以访问foo,bar而baz在Java中,如: 当我试图弄清楚这一点时,我以为我们遇到了麻烦,因为Scala生成了一个名为的类,当然您不能在Java中导入该类。幸运的是,我们只需要pack

  • 问题内容: 看一下这个例子: 如何从子对象中访问随机对象? 问题答案: 让类将自己的实例传递给该类。 经典Occam剃刀。

  • 本文向大家介绍Java遍历对象可访问的对象(堆1.0),包括了Java遍历对象可访问的对象(堆1.0)的使用技巧和注意事项,需要的朋友参考一下 示例