gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:56:11 26 4
gpt4 key购买 nike

我不知道是否存在解决方案,但这将是非常可取的。

我正在制作一个 Scala 小程序,我希望主 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com