【问题标题】:Can I overload an interface in Java?我可以重载Java中的接口吗?
【发布时间】:2018-11-14 11:33:45
【问题描述】:

我想定义一个与其他接口同名但参数不同的接口。我该怎么做?请帮忙。

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

【问题讨论】:

  • 一种常见的做法是在名称或前缀/后缀中添加数字。例如Vector2Vector3FunctionBiFunction

标签: java class interface duplicates


【解决方案1】:

你不能。您必须使用不同的名称。在 JDK 接口中就是这样完成的。

例如,考虑java.util.function.Function&lt;T, R&gt;java.util.function.BiFunction&lt;T, U, R&gt;。两者都是表示函数的函数式接口,但第一个表示带有一个参数(和一个结果)的函数,第二个表示一个带有两个参数(和一个结果)的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2011-06-03
    相关资源
    最近更新 更多