Могу ли я перегружать интерфейс в Java? - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу определить интерфейс с тем же именем, что и у другого, но с другими параметрами. Как мне это сделать? Пожалуйста, помогите.

public interface IFactory<T> {
    IFactory<T> Select(List<String> fields);
    IFactory<T> GroupBy(Expression<?> fields);
    IFactory<T> Where(Object column, ConditionalMethods conditionalMethod, Object... value);
    IFactory<T> And(Object column, ConditionalMethods conditionalMethod, Object... value);
    IFactory<T> Or(Object column, ConditionalMethods conditionalMethod, Object... value);

    T Take();
    T TakeNewObject();
    T TakeAndLock();
}

public interface IFactory<T, Z> {
    IFactory<T, Z> Select(List<String> fields);
    IFactory<T, Z> GroupBy(Expression<?> fields);
    IFactory<T, Z> Where(Object column, ConditionalMethods conditionalMethod, Object... value);
    IFactory<T, Z> And(Object column, ConditionalMethods conditionalMethod, Object... value);
    IFactory<T, Z> Or(Object column, ConditionalMethods conditionalMethod, Object... value);

    T Take();
    T TakeNewObject();
    T TakeAndLock();
}

Я получаю следующую ошибку:

класс дубликатов Java: com.xxx.IFactory

1 Ответ

0 голосов
/ 14 ноября 2018

Вы не можете.Вы должны использовать разные имена.Вот как это делается в интерфейсах JDK.

Например, рассмотрим java.util.function.Function<T, R> против java.util.function.BiFunction<T, U, R>.Оба являются функциональными интерфейсами, которые представляют функцию, но первый представляет функцию с одним аргументом (и результатом), а второй представляет функцию с двумя аргументами (и результатом).

...