目前,我需要从多个其他类访问几个静态对象。
public static OrthographicCamera camera;
public static World world;
public static Player player;
public static TouchpadHandler touchpad;
重复访问来自其他课程的人,感觉不干净或正确,如:
MainClass.world.blabla();
我尝试在新实例的构造函数中传递对所需对象的引用。这样的事情:(只是一个例子)
... MainClass.java
OtherClassINeed obj = new OtherClassINeed(world);
... OtherClassINeed.java
private World world;
public OtherClassINeed(World world){
this.world = world;
}
但是,一旦你开始需要多个东西(比如上面显示的4个),这似乎会令人难以置信地烦恼/效率低下。
所以我想知道:处理这种事情的最佳方法是什么?谢谢!
答案 0 :(得分:0)
我没有看到使用MainClass
的静态成员是一件坏事,如果你不喜欢它,你可以做以下事情:
class MainClass {
public static final OrthographicCamera camera;
public static final World world;
public static final Player player;
public static final TouchpadHandler touchpad;
static {
// initialize static members
}
}
class OtherClass {
public static final OrthographicCamera camera = MainClass.camera;
// now access camera locally.
}
顺便说一下,我相信你的主要代码气味是使用static
s,如果你需要单例,将它们转换为对象成员(非final),并且单个实例MainClass
可能使用IoC容器。
答案 1 :(得分:-1)
您应该在Main类中将对象设为private static,然后在那里创建静态getter,然后调用它们以在其他类中检索它们的最终引用,因此无需将它们传递给构造函数:
MainClass.java
private static World world;
private static Player player;
...
public static World getWorld() {
return world;
}
public static Player getPlayer() {
return player;
}
OtherClassINeed.java
private final World world = MainClass.getWorld();
private final Player player = MainClass.getPlayer();