@FunctionalInterface
Java 8 (Eclipse)の使用中に発生したエラーを再現しました。以下はコンパイルされません。Refined
エラーが発生します:
@FunctionalInterface
interface Functioner<TFunnel, TFan> {
Function<TFunnel, TFan> funnelledThenFanned();
}
@FunctionalInterface
interface Receiver<T, TFan>
extends Functioner<Supplier<? extends T>, TFan> {}
@FunctionalInterface
interface Giver<TFunnel, T>
extends Functioner<TFunnel, Supplier<T>> {}
@FunctionalInterface
interface Refined<T, R>
extends Function<T, R>, Receiver<T, Supplier<R>>, Giver<Supplier<? extends T>, R> {
@Override
public abstract R apply(T arg);
@Override
public default Function<Supplier<? extends T>, Supplier<R>> funnelledThenFanned() {
...
}
}
Refined
のすべてを拡張すると、Function
エラーが発生します。これらのいずれかを削除すると、コードがコンパイルされます。これは正しい動作ですか?もしそうなら、どのようにリファクタリングできますか/すべきですか?Receiver
Giver
アップデート
これは同様のエラーを生成するようです:
@FunctionalInterface
interface Another<TFunnel, T>
extends Functioner<TFunnel, Supplier<T>>, Giver<TFunnel, T> {
public abstract void newMethod();
@Override
public default Function<TFunnel, Supplier<T>> funnelledThenFanned() {
...
}
}
@FunctionalInterface
また、すべてがコンパイルされていないことに注意してください。インターフェイス インスタンスをラムダとして表現することはできません。