BaseFoo не может наследоваться с другими аргументами: <T, X.Bar <T >> и <T, X.Foo <T >>

Это упрощенная версияJava наследует возвращаемый тип метода Fluent в многоуровневых иерархиях.

Учитывая следующий код:

public enum X {
    ;
    static interface BaseFoo {
        S foo();
    }

    static interface Foo extends BaseFoo {
        void foo1();
    }

    static interface BaseBar extends BaseFoo {
        S bar();
    }

    static interface Bar extends BaseBar, Foo {
        void bar1();
    }

}

бежатьjavac X.java Я получаю сообщение об ошибке:

X.java:15: error: BaseFoo cannot be inherited with different arguments:  and 
    static interface Bar extends BaseBar, Foo {
           ^

У кого-нибудь есть решение?

отказыватьсяЯ пытаюсь использовать шаблон для реализациисвободный интерфейс через иерархию наследования класса контейнера.

ФонЧтобы людям было проще понять, зачем мне это нужно, вот история. Я хочу создать контейнерное семейство:Traversal&nbsp;<-Sequence&nbsp;<-List, ТакTraversal&nbsp;есть методTraveral accept(Visitor)&nbsp;(нетPECS&nbsp;для краткости) этот метод всегда должен возвращатьthis&nbsp;после итерации посетителя через элементы. Когда у меняList&nbsp;типа, я хочу метод возвратаList&nbsp;вместоTraversal&nbsp;потому что я хочу, чтобы можно было назвать что-то вродеmyList.accept(v).head(15), гдеhead(int)&nbsp;это методList&nbsp;неTraversal