Je ne sais pas si une solution existe mais ce serait très souhaitable.Comment créer une applet Scala dont la classe Applet est un singleton?
Je fais une Scala Applet, et je veux la principale classe Applet d'être un singleton il est accessible ailleurs dans l'applet, un peu comme:
object App extends Applet {
def init {
// do init here
}
}
Au lieu de cela je dois faire la App classe une classe instanciable normale sinon elle se plaint parce que le constructeur est privé. Donc, le hack laid j'est d'aller:
object A {
var pp: App = null
}
class App extends Applet {
A.pp = this
def init {
// do init here
}
}
Je déteste vraiment ça, et est l'une des raisons pour lesquelles je n'aime pas faire applets à Scala en ce moment.
Une meilleure solution? Ce serait bien ...
edit - J'ai trouvé une solution de piratage assez décente utilisant la conversion implicite. Déclarez votre classe Applet comme une classe normale, puis ajoutez:
class Appable {}
object App extends Appable {
implicit def appable2App(a:Appable) = inst
var inst: App = null
}
Ensuite vient de mettre la variable d'instance lorsque l'Applet est créé et vous pouvez accéder à tout comme si elle était un singleton.
Est-ce le 'scala.swing.Applet' ou le' java.applet.Applet'? D'une manière ou d'une autre, vous devriez inclure suffisamment de code dans votre "vilain bidouille" pour qu'il soit compilé. Dans mes mains, aucun exemple ne se soucie des constructeurs privés, mais tous deux se plaignent que «ui» doit être défini. –
Il provient d'une classe héritée de java.applet.Applet. Je vais peut-être passer un peu de temps à faire un exemple de base. Notez bien que ceci est seulement un problème avec un navigateur web, comme une applet de fichier jar peut lancer à partir d'un principal statique() – nullspace