Java Java Objects Creating the MVP Prompting for Guesses

Brendan Passey
Brendan Passey
999 Points

this.game = game does it create a copy or does it make prompter refer to literally the same object created in Hangman.ja

In the prompter class, we declare an instance of game and then kind of copy the state of the instance of game created in Hangman.java when we say this.game = game. Are we simply making a carbon copy of the state of the one created in Hangman.java(the one with the answer passed in) or are we literally asking prompter to refer to the same INSTANCE of the class created in Hangman.java?

In other words if something about the instance of Game created in Hangman.java changed would the instance of Game in Prompter.java know about it without this.game = game again later in a prompter method or something?

3 Answers

Steven Parker
Steven Parker
202,103 Points

That's exactly right. Simple assignment of a complex object makes a reference to the same object.

If you want a copy (new instance) of an object, you can use the "Clone()" method.

Brendan Passey
Brendan Passey
999 Points

Thanks for replying so quickly again Steven!

Brendan Passey
Brendan Passey
999 Points

The pieces are falling into place Steven. Hypothetically though in that case Steven Parker would it still work if you called it something else in the prompter class? eg

private Game prompterGame;

public Prompter(Game prompterGame) { this.prompterGame = prompterGame; }

Could you just hypothetically proceed to refer to the same object with 2 different names depending on whether you are using it from?

It seems to work, is there any reason not to do this other than confusion?

Steven Parker
Steven Parker
202,103 Points

Making it work is certainly job 1, but it's a "best practice" to also avoid confusion! :wink: