Составной общий валидатор в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Составной общий валидатор в Java

Сообщение Anonymous »

Я пытаюсь создать композитный валидатор для набора API. Общий интерфейс: < /p>

Код: Выделить всё

public interface APIValidator {
boolean validate(Input i, Context c);
}
< /code>
Например, если есть 2 API: отправить и принять, у меня есть интерфейсы «маркер»: < /p>
public interface SendAPIValidator implements APIValidator {
boolean validate(SendInput i, SendContext c);
}

public interface AcceptAPIValidator implements APIValidator {
boolean validate(AcceptInput i, AcceptContext c);
}
< /code>
И они, соответственно, имеют реализации.class Validators {
public static  APIValidator composite(Set validators) {
return (input, context) -> {
return validators.stream()
.allMatch(validator -> validator.validate(input, context));
}

}
< /code>
Тем не менее, попытка ввести это в провайдер или что-то не работает: < /p>
SendAPIValidator provideCompositeValidator(Set validators) {
// Error: no instance(s) of type variable(s) C, I exist so that SendAPIValidator conforms to APIValidator
return Validators.compositeValidator(validators);
}
< /code>
Это из -за инвариантов типа Java (я забыл технический термин)? Я знаю, что это можно сделать, если я прохожу в Apivalidator  
вместо этого. Есть другой способ?


Подробнее здесь: https://stackoverflow.com/questions/797 ... or-in-java

Вернуться в «JAVA»