В документации Java для подстановочных знаков говорится, что они могут использоваться в качестве возвращаемых типов, но, как правило, это не очень хорошая идея. Это все еще верно, если подстановочный знак используется в качестве возвращаемого типа для абстрактного метода, но класс, который реализует этот метод, возвращает конкретный тип? Если нет, то как лучше всего справиться с такой ситуацией. Рассмотрим пример ниже. В этом случае Entity
может быть смоделировано после ответа JSON REST, где во втором случае результатом является просто список строк. Лучше использовать List<Object>
в качестве типа возврата или что-то еще целиком?
public abstract class AbstractClient {
public abstract List<?> listEntities();
}
public class ConcreteClient {
@Override
public List<Entity> listEntities();
}
public class ConcreteClient2 {
@Override
public List<String> listEntities();
}