什么是访问同一类中多个对象的最佳方法 - 来自多个类?

时间:2014-01-12 04:27:53

标签: java class static instance global

目前,我需要从多个其他类访问几个静态对象。

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个),这似乎会令人难以置信地烦恼/效率低下。

所以我想知道:处理这种事情的最佳方法是什么?谢谢!

2 个答案:

答案 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();