Я написал нижеприведенный код, который имеет общий абстрактный класс службы, который имеет большинство общих функций, которые служба должна выполнять для всей своей реализации.Все эти сообщения должны быть проверены и затем переданы соответствующему классу реализации, чтобы сделать то, что они хотят сделать с этим объектом
Но проблема здесь в том, что компилятор Java жалуется, что аргумент NotificationMessage в моем коде ниже имеет неправильный тип.
Дочерний класс
Может кто-нибудь посоветовать, почему и как я могу это исправить?
Мой класс AbstractService:
public abstract class AbstractService<N extends NotificationMessage> implements ServiceInterface {
@Override
public boolean execute() {
NotificationMessage notification = controller.load(); //this call would return object of sub-type of NotificationMessage
processData(notification); //Compiler complains here that the argument is wrong here
}
protected abstract void processData(N notification);
}
}
Один из конкретных классов обслуживания:
public class SummaryService extends AbstractService<SummaryNotification> {
@Override
protected void processData(SummaryNotification notification) {
}
}
Объекты данных:
public class NotificationMessage {
public String getName() {
return "";
}
}
public class SummaryNotification extends NotificationMessage {
public String getName() {
return "";
}
public String getSummary() {
return "";
}
}