class - 如何制作一个Applet类是单例的Scala Applet?

标签 class scala object applet singleton

我不知道是否存在解决方案,但非常理想。

我正在制作一个 Scala Applet,我希望主 Applet 类是一个单例,以便可以在 applet 中的其他位置访问它,有点像:

object App extends Applet {
  def init {
    // do init here
  }
}

相反,我必须使 App 类成为普通的可实例化类,否则它会提示,因为构造函数是私有(private)的。所以我的丑陋黑客就是去:

object A {
  var pp: App = null
}

class App extends Applet {
  A.pp = this
  def init {
    // do init here
  }
}

我真的很讨厌这个,这也是我现在不喜欢在 Scala 中制作小程序的原因之一。

还有更好的解决办法吗?那就太好了...

编辑——我发现了一个使用隐式转换的相当不错的黑客解决方案。将您的 Applet 类声明为普通类,然后添加:

class Appable {}

object App extends Appable {
implicit def appable2App(a:Appable) = inst
  var inst: App = null
}

然后只需在创建 Applet 时设置实例变量,您就可以像访问单例一样访问所有内容。

最佳答案

您所要求的与小程序执行模型相反。具体来说,不能保证您不会在同一个 JVM 中运行该小程序的多个副本。默认设置是在同一 JVM 中运行每个小程序(如果需要,包括同一小程序的多个副本)。参见例如Sun's tutorial .

这就是为什么小程序按其本来的方式指定,而不是使用 static public void 方法。您的其余代码不能将小程序作为参数吗?

关于class - 如何制作一个Applet类是单例的Scala Applet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530462/

相关文章:

java - 使用梯形近似求曲线下面积的程序中存在逻辑错误

scala - 仅从 1 个元素创建一个递归流?

scala - Hazelcast 排序 IMap (Scala)

javascript - 定义 JavaScript 对象属性

python - Kivy:如何在Python中实例化动态类

java - 返回错误值的方法

java - java中有没有办法在运行时改变对象类?

Java没有从文件中读取所有对象

java - 如何解决 ClassNotFoundException?

scala - 带有 Play Scala 的 ReactiveMongo