Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a singleton reinitialize variables?

Tags:

java

My singleton class:

public class XandY {
    private double x, y;
    private static XandY xy;

    //Constructor sets an x and y location
    private XandY() {
        x = 210.0;
        y = 100.0;
    }

    public static XandY getXandY() {
        if (xy == null)
            xy = new XandY();
        return xy;
    }

    public void updateXandY() {
        x += 10;
        y += 5;
    }
}

Other class that changes singleton values and tries to reinitialize. My question is if I call changeXandY a few times then want to call resetXandY how do I make it reset back to the original x and y?

public class GameWorld {
    private List<GameObject> objects;

    public void initialize() {
        objects = new ArrayList<GameObject>();
        objects.add(XandY.getXandY());
        ...add other objects that are not singletons
    }

    public void changeXandY {
        for (int i=0; i<gameObject.size(); i++) {
        if (gameObject.get(i) instanceof XandY)
        ((XandY)gameObject.get(i)).updateXandY();
    }

    public void resetXandY {
        initialize();
    }
}
like image 639
T.H. Avatar asked Feb 12 '26 18:02

T.H.


1 Answers

For this use case, you could simply store them as default values. Such as

    private double x, y;
    private static XandY xy;
    private static final double default_x = 210.0;
    private static final double default_y = 100.0;

That way when you reset, just:

    public void resetXandY {
        this.x = default_x;
        this.y = default_y;
    }

That being said, you may want to change your default constructor to look the same way.

like image 146
Haris Nadeem Avatar answered Feb 15 '26 08:02

Haris Nadeem



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!