我不知道是否存在解决方案,但非常理想。
我正在制作一个 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/