Java, . , #. , messageMap:
private final Map<Byte, Class<? extends Message>> messageMap;
Message. addMessage :
public void addMessage(int id, Class<? extends Message> messageClass) {
messageMap.put((byte) id, messageClass);
}
, , , Message, messageMap, , .
Class<? extends Message> messageClass = messageMap.get(id);
Message message = messageClass.newInstance();
newInstance() .
. , , :
// Messages that we can send to the client.
addOutgoingMessage(0, HeartbeatMessage.class);
addOutgoingMessage(1, BeginMessage .class);
addOutgoingMessage(2, CancelMessage .class);
// Messages that the client can send.
addIgnoredMessage (0, HeartbeatMessage.class);
addIncomingMessage(1, StatusMessage .class, statusMessageHandler);
addIncomingMessage(2, ProgressMessage .class, progressMessageHandler);
addIncomingMessage(3, OutputMessage .class, outputMessageHandler);
addIncomingMessage(4, FinishedMessage .class, finishedMessageHandler);
addIncomingMessage(5, CancelledMessage.class, cancelledMessageHandler);
addIncomingMessage(6, ErrorMessage .class, errorMessageHandler);