またはOptional
タイプの両方をパラメータとして受け入れるJavaで@FunctionalInterface
を作成したいとします。私はこれをやろうとしましたが、共通のインターフェースを共有していないので、実現することは不可能です。私も@FunctionalInterface
を呼び出す共通のラッパークラスを使用しようとしましたが、実行時に型パラメータが必要なので、これは不可能です。ストリームを受け入れる機能的なインタフェースかオプションか?
最小例:
@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;
}
}
たぶん私のアプローチは間違っている...私は、フィードバックおよび/または、この問題に対する解決策を受け取るのが大好きです。
あなたが実装しようとしているものはよく分かりませんが、アダプタパターンを使用してこれらの2つを機能インターフェイスに合わせる必要があるようです。 –
@LyubomyrShaydariv入力のおかげで、多分それは行く方法です、私はそれを試してみましょう。 –