関数インターフェース Function の compose() および andThen() メソッドをテストするために、単純なコードを作成しました。
public class Test {
public Trans testCompose() {
return new T1().compose(new T2());
}
}
interface Trans extends Function<File, File> {
}
class T1 implements Trans {
@Override
public File apply(File file) {
return null;
}
}
class T2 implements Trans {
@Override
public File apply(File file) {
return null;
}
}
しかし、ご覧のとおり、このコードはコンパイルされません。与えられた理由: タイプ variable(v) V のインスタンスが存在しないため、Function は Trans に準拠します。
ワイルドカードの extends と super の違いについて複数の主題をたどると、リストでそれらを使用することは理解できますが、ここでコンパイルできない理由はよくわかりません。
メソッド testCompose() でオブジェクト Trans を返し続ける方法はありますか、それともコードをコンパイルさせるために必ず関数を返す必要がありますか?