[英]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.