Из-за стирания типа вы не можете реализовать один и тот же интерфейс дважды (с разными параметрами типа).Итак, полученная вами ошибка затмения верна.
Вы можете добавить базовый класс для всех возможных «T», что может быть ограничивающим и бесполезным в зависимости от области применения этих классов.И вы запросили решение, которое не позволяет вам создавать множество классов Observer (я предполагаю, что интерфейсы) для каждого возможного события, ну, я не вижу, как иначе вы бы сделали это, не ставя под угрозу безопасность времени компиляции.
Я бы предложил следующее
interface Observer<T>{
public void update (T o);
}
interface DialogBoxAuthenticateObserver extends Observer<DialogBoxAuthenticate>{
}
Беспорядок в коде не так уж ужасен, и если вы поместите их все в один файл, их будет легко ссылаться и поддерживать.Надеюсь, я помог
РЕДАКТИРОВАТЬ : после некоторого поиска в Google (что привело меня обратно к stackoverflow !, ваш вопрос был задан по-другому и ответил аналогично здесь