Java - 强制继承 N 个重写的抽象方法中的 1 个

Java - Force Inheritance of 1 of N Overridden Abstract Methods

使用 Java 6,我有一种情况,我想强制 child class 实现 N 个重写方法中的 1 个。让我用一个例子来解释:

public abstract class TestClass {

  public abstract String isValidInput(ObjectOne objectOne);

  public abstract String isValidInput(ObjectOne objectOne, ObjectTwo objectTwo);

  public abstract String isValidInput(ObjectOne objectOne, ObjectTwo objectTwo, ObjectThree objectThree);

  //Lots of other Code

}

我面临的问题是我不知道我需要验证多少 objects 或 objects 的类型。但是,我确实知道可能性有限。 (我在上面的例子中使用了 3,但实际上它可能是 5。)我想做的是强制我的 child class 只实现 one isValidInput(...) 方法视情况而定。

解决这个问题最干净的方法是什么?

非常感谢您的宝贵时间!

I do not know exactly how many objects or types of objects

然后让所有你想测试的对象,不管是什么类型,都实现相同的接口。例如:

public interface Testable {
    public boolean isValid();
}

然后你可以只传递一个可测试对象列表:

public abstract class TestClass {
    public abstract String isValidInput(List<Testable> list);
}

java 中唯一存在的选项是省略号 (...),表示相同类型的可变数量的参数。

例如:

public void doSomething(Object... arguments){
    // something
}

arguments 在这种情况下是一个简单的数组。其他选项可能正在重新考虑架构。我认为这是最好的选择。

为什么不将上面的答案组合起来并添加泛型?

public interface Validator<T> {

    boolean validate(T... objects);
}

public class StringValidator implements Validator<String> {

    @Override
    public boolean validate(String... objects) {
        return false;
    }
}