2014-11-18 6 views
0

Итак, у меня есть эти классы, которые я не могу изменить, что мне нужно использовать для отправки сериализованных объектов на сервер. Но у меня нет большого опыта работы с перечислениями, и мне трудно понять, как это сделать?С трудом понимая перечисление «экземпляр»?

import java.io.Serializable; 

public abstract class Message implements Serializable { 

    private static final long serialVersionUID = 0L; 

    private final MessageType type; 

    public Message(MessageType type) { 
     this.type = type; 
    } 

    public MessageType getType() { 
     return type; 
    } 

@Override 
    public String toString() { 
     return type.toString(); 
    } 
} 



public final class CommandMessage extends Message { 

    private static final long serialVersionUID = 0L; 

    private final Command cmd; 

    public CommandMessage(Command cmd) { 
     super(MessageType.COMMAND); 
     this.cmd = cmd; 
    } 

    public Command getCommand() { 
     return cmd; 
    } 

    public static enum Command { 

     LIST_PLAYERS, EXIT, SURRENDER; 

     private static final long serialVersionUID = 0L; 
    } 
} 

основном я понимаю сериализации, это для простой игры TicTacToe, и у меня есть фоновый поток работает, чтобы взять в объектах. Но как я могу сделать команду для отправки на сервер? Предположим, я хочу видеть список игроков, как я могу сделать объект commandMessage, чтобы я мог его отправить? Я думаю, что я пропускаю что-то действительно просто> _ <

public static void main(String[]args) throws IOException{ 

    //make tictactoe client 
    TicTacToeClient newClient = new TicTacToeClient(); 

    //start run 
    newClient.run();  

    //start a connection, send username 
    ConnectMessage connect = new ConnectMessage("User17"); 
    newClient.out.writeObject(connect); 

    CommandMessage newComm = new CommandMessage(); //what!? HOW? 
    //s.BOARD = PLAYERLIST;??? 

    //NOPE. 
    //PlayerListMessage playerList = new PlayerListMessage();    
    System.out.println();  
} 

ответ

0

Вы должны использовать конструктор

CommandMessage newComm = new CommandMessage(CommandMessage.Command.LIST_PLAYERS); 

или использовать один из других перечислений при условии