簡體   English   中英

Java-N個被覆蓋的抽象方法之一的強制繼承

[英]Java - Force Inheritance of 1 of N Overridden Abstract Methods

在使用Java 6的情況下,我想強制子類實現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

}

我面臨的問題是我不知道要驗證多少個對象或對象類型。 但是,我確實知道,可能性有限。 (我在上面的例子中使用3但在現實中它可能會是5)我想要做的就是逼我的子類只實現的一個 isValidInput(...)根據具體情況的方法。

解決此問題的最干凈方法是什么?

非常感謝您抽出寶貴的時間!

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;
    }
}

我不知道到底有多少個對象或對象類型

然后,使所有要測試的對象(無論類型如何)都實現相同的接口。 例如:

public interface Testable {
    public boolean isValid();
}

然后,您可以傳遞可測試對象的列表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM