Ich möchte eine @FunctionalInterface
in Java erstellen, die sowohl Stream
s oder Optional
Typen als Parameter akzeptiert. Ich habe versucht, dies zu tun, aber da sie keine gemeinsame Schnittstelle haben, scheint es unmöglich zu erreichen. Ich habe auch versucht, eine gemeinsame Wrapper-Klasse zu verwenden, die die @FunctionalInterface
aufruft, aber da ich die Typparameter zur Laufzeit brauche, scheint es, dass dies nicht möglich ist.Funktionale Schnittstelle akzeptiert Stream oder optional?
Mindest Beispiel:
@FunctionalInterface
public interface AcceptingInterface<S, T> {
T accept(S s);
}
public class Test<S, T> {
private final AcceptingInterface<S, T> funcInterface;
private final Class<S> source;
private final Class<T> target;
public Test(AcceptingInterface<S, T> a, Class<S> s, Class<T> t) {
this.funcInterface = a;
this.source = s;
this.target = t;
}
public T invoke(S s) {
return s == null ? null : this.funcInterface.accept(s);
}
public Class<S> getSource() {
return source;
}
public Class<T> getTarget() {
return target;
}
}
Vielleicht falsch mein Ansatz ist ... Ich würde gerne Feedback und/oder eine Lösung für dieses Problem zu erhalten.
Nicht sicher, was Sie zu implementieren versuchen, aber Sie scheinen das Adaptermuster zu verwenden, um diese beiden an Ihrer funktionalen Schnittstelle auszurichten. –
@LyubomyrShaydariv Danke für die Eingabe, vielleicht ist das der richtige Weg und ich werde es ausprobieren. –