Так что я допустил ошибку.
При первоначальном написании подписи для API я создал что-то вроде этого:
public JellyBeanResult getJellyBeanReport();
Теперь получается, что я хотел бы повторно использовать более конкретный объект JellyBeanResult из-за его функциональности, но было бы странно, если бы другие функции возвращали тип, названный для другого процесса. Есть несколько способов исправить это, что я могу придумать. Я мог бы переименовать тип возвращаемого значения во что-то более общее:
public GenericResult getJellyBeanReport();
public GenericResult getChocolateBarReport();
но это сломало бы любой код, который использует API. Я мог бы создать новый, более точно названный класс, который расширяет SpecificResult, который более точно соответствует новой функции:
public class ChocolateBarResult extends JellyBeanResult{};
public JellyBeanResult getJellyBeanReport();
public ChocolateBarResult getChocolateBarReport();
Но это действительно, действительно ужасно, и проблема все еще остается, если я хочу снова использовать тип возврата в будущем. Как я могу очистить эти подписи, чтобы сделать их менее запутанными, не нарушая код, который их использует?