エラーをそのままタイトルにして申し訳ありませんが、これ以上のタイトルが見つかりませんでした。
すべてのバリデータークラスの青写真として使用するために、次のように定義されたインターフェースがあります。
public interface Validator<T> {
public boolean validate(T item);
}
そして、それを実装するクラスがいくつかあります。そのうちの1つがこれだとしましょう:
public class EmptyStringValidator implements Validator<String> {
private final String _errorMessage;
public EmptyStringValidator() {
this("String cannot be empty.");
}
public EmptyStringValidator(String message) {
this._errorMessage = message;
}
@Override
public String getMessage() {
return this._errorMessage;
}
@Override
public boolean validate(String item) {
return gsi.application.core.Validation.isEmptyString(item);
}
}
すべてを配列に入れて、すべてを1つのループで呼び出したいと思います。これは私が使用しているコードです:
public List<Validator<? extends Object>> validators;
public FormItem<T> addValidator(Validator<? extends Object> validator) {
this.validators.add(validator);
return this;
}
public boolean validate() {
for (Validator<? extends Object> validator : this.validators)
if (!validator.validate(this.getInputValue())) {
this._errorMessage = validator.getMessage();
return false;
}
return true;
}
ただし、そのコードはvalidate()
関数、特にこの部分でエラーを出しています:
validator.validate(this.getInputValue())
私が言及したエラーが表示されます
The method validate(capture#2-of ? extends Object) in the type Validator<capture#2-of ? extends Object> is not applicable for the arguments (String)
私の理解では意味がありません。私の理解<? extends Object>
では、Object クラスから派生したものは何でも受け入れるべきですよね?
誰かが私が間違っていることを指摘したり、正しい方向に向けたりすることはできますか? ありがとう。