Приведу пример задачи, чтобы ясно обозначить суть вопроса. Я новичок в Javа, поэтому прошу сильно не пинать, но сил уж нет и гугл не помогает :)
Итак. Представим, что есть множество реализаций интерфейса
ICompany:
CompanyImplA, CompanyImplB и т.д.
Мне необходимо написать некий метод, который возвращал бы объект одного из этих классов (CompanyImplA, CompanyImplB и т.д.), но при этом этот метод изначально не должен точно знать, объект какого типа будет приходить внутри него.
Постараюсь изобразить требуемое в коде
// Тип возвращаемого объекта должен каким-то образом определяться в заголовке метода (но как?)
public ТутОднаИзРеализацийICompany getCompany() {
ICopmany company = CompanyContainer.getCurrentCompany(); // возвращает ICompany
// далее каким-то образом кастим company из ICompany в ОднаИзРеализацийICompany, возможно получив исходный класс посредством company.getClass()
return company; // и возвращаем уже объект приведенного типа
}
Чувствую, что вопрос проще пареной репы и ответ лежит на поверхности. Поправьте меня, пожалуйста, если я совсем глубоко в чем-то ошибаюсь.