在游戏中访问Global对象! 2.0与Java

时间:2012-04-19 22:54:40

标签: java playframework-2.0

我已经扩展了 GlobalSettings 类,如教程Application global settings所示。

如何从视图方法中获取对该类实例的访问权限? 我假设在应用程序启动时创建了一个实例,并且它可能是某个对象的成员。

我希望例如在这里找到它:

Play.application().getGlobalSettings()

或类似的东西,但我无法在Play。*层次结构的任何地方找到它。

有什么想法吗? 感谢。

2 个答案:

答案 0 :(得分:5)

我是Play 2.0的新手,不过,我认为使用插件注入会更好。看看这个:

https://github.com/typesafehub/play-plugins/tree/master/inject

使用这种方法,您只需将以下行添加到控制器(以及其他一些配置,如上面链接中所述):

@Inject static MyStaticObj obj;

其余所有内容都是使用注入框架自动完成的。无需担心全球等等。

那就像你说的那样,在发现插件注入框架之前,我花了很多时间试图弄清楚如何使用GlobalSettings对象。

我的感觉是,鉴于Global的实现方式(作为默认/未命名包中的类),无法在应用程序代码中的任何位置引用它。我不确定这是设计还是偶然(似乎Play人们现在都在考虑Scala ......)。幸运的是,插件方法似乎是处理这些共享全局变量的更好方法。

答案 1 :(得分:-3)

直接引用Global对象。 例如,不要写:

public class Global extends GlobalSettings {}

object Global extends GlobalSettings {}

object Global extends Global {}
class Global extends GlobalSettings {}

并且您可以在代码中的任何位置引用Global对象,只需写:

Global.someMethod()