简体   繁体   中英

How to save object variables after closing my program?

I'm trying to learn Java and OOP by creating a monopoly banker program. However, I would like some object variables to be saved after I exit the program, so that after playing half of a monopoly game I can exit my program and then restart it with all the player balances saved.

I'm guessing this requires some sort of database?

Here is a section of my code; I am trying to save the "balance" variable for all of my objects (players) after I exit my program.

   public class Monopoly {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    //creates the users (name classes)
players player1 = new players();
players player2 = new players();
players player3 = new players();
players player4 = new players();



while (true)  {

player1.balance=player1.finalbalance;
player2.balance=player2.finalbalance;
player3.balance=player3.finalbalance;
player4.balance=player4.finalbalance;

I would just serialize this object and deserialize it after you resume your game. I think it is the best way. Here you can find the way how to do that. http://www.tutorialspoint.com/java/java_serialization.htm

Maybe I didn't really understant your question but if you need a method to catch the exit before the program exit (CTRL-C for instance) you van use an "exit hook", usefull also to free connection

see

Useful example of a shutdown hook in Java?

While you could of course use a database, this would be quite overkill for a simple offline game. In that case it would be more common to save the game-state to a file (a "savegame").

By using the class ObjectOutputStream , you can write objects to a file. It converts the objects into a format which can then later be read with the class ObjectInputStream .

You have to save it to a file somewhere, the only surefire way to carry information between programs. You'll need to decide a format to save your file with. Look up some tutorials for reading/writing files, I'm sure it will help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM