또는 Optional
유형을 매개 변수로 사용할 수있는 Java에서 @FunctionalInterface
을 생성하려고합니다. 나는이 일을 시도했지만 공통 인터페이스를 공유하지 않기 때문에 성취하기가 불가능 해 보입니다. 또한 @FunctionalInterface
을 호출하는 일반적인 래퍼 클래스를 사용해 보았습니다.하지만 런타임시 형식 매개 변수가 필요하기 때문에 불가능하다고 생각됩니다.Stream 또는 Optional을 수락하는 기능적 인터페이스?
최소 예 :
@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;
}
}
어쩌면 나의 접근 방식은 잘못된 것입니다 ... 나는 피드백 및/또는이 문제에 대한 해결책을받을 싶어요. 예상되는
@FunctionalInterface
public interface AcceptingInterface<V, T> {
T accept(Stream<? extends V> s);
default T accept(Optional<? extends V> opt){
return accept(opt.map(Stream::of).orElseGet(Stream::empty));
}
}
자바 9 :
구현하고자하는 것이 확실하지 않지만 어댑터 패턴을 사용하여 기능적 인터페이스와 정렬되도록해야 할 것 같습니다. –
@LyubomyrShaydariv 의견을 보내 주셔서 감사합니다. 어쩌면 그것이가는 길이며 시도해 보겠습니다. –