Composite Generic Validator in JavaJava

Java-Forum
Anonymous
 Composite Generic Validator in Java

Post by Anonymous »

Ich versuche, einen zusammengesetzten Validator für eine Reihe von APIs zu erstellen. Die generische Schnittstelle lautet: < /p>

Code: Select all

public interface APIValidator {
boolean validate(Input i, Context c);
}
< /code>
Wenn es beispielsweise 2 APIs gibt: Senden und Akzeptieren, habe ich "Marker" Schnittstellen: < /p>
public interface SendAPIValidator implements APIValidator {
boolean validate(SendInput i, SendContext c);
}

public interface AcceptAPIValidator implements APIValidator {
boolean validate(AcceptInput i, AcceptContext c);
}
< /code>
bzw. diese haben Implementierungen.class Validators {
public static  APIValidator composite(Set validators) {
return (input, context) -> {
return validators.stream()
.allMatch(validator -> validator.validate(input, context));
}

}
< /code>
versucht jedoch, dies in einen Anbieter zu injizieren, oder etwas funktioniert nicht: < /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>
Ist das an den Typ -Invarianten von Java (ich vergesse den technischen Begriff)? Ich weiß, dass es möglich ist, dies zu tun, wenn ich stattdessen in Apivalidator  
bestehe. Gibt es einen anderen Weg?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post