У меня есть ниже класс Genric который используется для установки любого типа данных Проблемы при использовании общего
public class NotificationData<E> {
private E element;
public E getElement() {
return element;
}
Ниже интерфейс задачи Notification, который показывает время компиляции ошибки -
T не может быть разрешен к типу. Я добавляю «» перед методом, который разрешает ошибку, но создает проблему для других классов, которые используют этот интерфейс.
public interface NotificationTask {
void execute(NotificationData<T> taskData);
// --other methods
}
Ниже класс реализует его, но показывающий ошибки
Имя столкновения: Метод Execute (NotificationData) типа AbstractEmailNotificationTask имеет тот же стирание как выполнения (NotificationData) типа NotificationTask но делает не переопределить его
и подготовитьEmailTemplate показать людям мычание error-
Метод prepareEmailTemplate (NotificationData) от типа AbstractEmailNotificationTask относится к отсутствующему типу Т
public abstract class AbstractEmailNotificationTask implements NotificationTask{
private static final Log logger = LogFactory.getLog(AbstractEmailNotificationTask.class);
private boolean flag;
public <T> void execute(NotificationData<?> taskData) {
try {
String content=prepareEmailTemplate(taskData);
setTaskExceuted(true);
} catch (Exception e) {
logger.debug (e.getMessage(),e);
setTaskExceuted(false);
}
}
abstract protected String prepareEmailTemplate(NotificationData<T> taskData) throws TaskExecutionException;
}
public class AddressUpdateEmailNotification extends AbstractEmailNotificationTask {
public AddressUpdateEmailNotification() {
}
@Override
protected String prepareEmailTemplate(NotificationData<CustomerAddress> taskData) {
CustomerAddress customerAddress= taskData.getElement();
return customerAddress.getCity() +":"+customerAddress.getState().getStateName();
}
}
выше фактический класс, который реализует шаблон prepareEmail. В этом классе я передаю CustomerAddress, но в других классах, расширяющих AbstractEmailNotificationTask, мне нужно передать другой объект. Я хочу использовать общие, но сталкиваясь с этими проблемами.
Почему это обозначено -1? –