@Nube

Вопрос про наследование, как?

Есть абстрактный класс Сообщение , от которого наследуется классы Уведомление и Регистрация .Так вот от клиента отправляется класс Регистрация, а сервер принимает только класс Сообщения. У класса Сообщение есть поле -тип сообщение(Уведомление или Регистрация ) и если тип сообщения регистрация то он должен вытащить данные полей класса Регистрация . Проблема такая: пришедшее от клиента сообщение я заворачиваю в класс Сообщение и не могу его завернуть в класс Регистрация . Подскажите что можно сделать.
вот пример
try {
            // пришедшие данные являются ли они сообщением
            if (!(msg instanceof Message)){
                System.out.println("Чужеродная субстанция" +
                        "");
                return ;
            }
            // проверка что за  сообщение
            message = (Message)msg;
            if (msg!= null){
                switch (message.getTypeMessage()){
                    case MESSAGE:
                        System.out.println("Классическое сообщение" );
                        break;
                    case REGISTRATION:
                        System.out.println(" Регистрация");
                        Account account = (Account) message;
                        String  email=  account.getEmail().toString();
                        String  password = account.getEmail().toString();
                        System.out.println(email);
                        //saveTraz = new SaveTraz();
                        //saveTraz.saveData(email,password);
                        break;
                }
            }
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@raspier
Java Developer
Попробуйте ввести в решение Generics. Скажите, что ждёте на вход потомка вашего абстракного класса.

PS: Зачем вам switch/case если у вас только два условия, ещё и одно из них вам не интресно. Попробуйте переделать на что-то вроде:
if (message!= null && message.getTypeMessage() == REGISTRATION) {
// TODO
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы