2

関数インターフェース 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 を返し続ける方法はありますか、それともコードをコンパイルさせるために必ず関数を返す必要がありますか?

4

1 に答える 1