依赖/循环泛型循环

TeN*_*NoX 6 java generics

问题:

我有两个接口(这里GenCarryGen):

public interface GenCarry<T extends Gen> {
    GenCarry<T> setGen(T gen);
}

public interface Gen<T extends GenCarry> {
    void applyOn(T carry);
}
Run Code Online (Sandbox Code Playgroud)

它在我忽略'rawtypes'警告时起作用,但是试图完成它们我不会太过分:

GenCarry<T extends Gen<GenCarry<T>>>
Gen<C extends GenCarry<Gen<C>>> -> error: not a valid substitute for the bounded parameter.
Run Code Online (Sandbox Code Playgroud)

题:

如果这样的界面看起来如何完整 - 或者甚至是可能的?

是否有更好的方法来"概括"这样的界面?

man*_*uti 2

您可以定义两个类型参数:

public interface GenCarry<K extends GenCarry<K, T>, T extends Gen<T, K>> {
    GenCarry<K, T> setGen(T gen);
}

public interface Gen<K extends Gen<K, T>, T extends GenCarry<T, K>> {
    void applyOn(T carry);
}

class StringGenCarry implements GenCarry<StringGenCarry, StringGen> {
    @Override
    public StringGenCarry setGen(StringGen client) {
        ...
    }
}

class StringGen implements Gen<StringGen, StringGenCarry> {
    @Override
    public void applyOn(StringGenCarry network) {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)