泛型错误:重复的类型参数

Jay*_*Jay 1 java generics

这就是我的代码

public interface Initializer<A, B> {

    public B init(A input);
}

public abstract class AbstractInitializer<A, B> implements Initializer<A, B> {

    private B output;

    @Override
    public final B init(A input) {
        if (output != null)
            return output;
        return initialize(input);
    }

    protected abstract B initialize(A input);
}

public class MemoryInitializer<Map, Map> extends AbstractInitializer<Map, Map> {

    @Override
    protected Map initialize(Map input) {
        // TODO Auto-generated method stub
        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

最后的具体实现,我希望输入在初始化后映射和输出为映射,抛出编译器错误,表示"重复类型参数映射".我错过了什么?

Yas*_*jaj 8

当您想在类中允许泛型时使用此方法

MemoryInitializer<Map, Map>
Run Code Online (Sandbox Code Playgroud)

更清楚一点,如果你使用过

MyClass<T, T>
Run Code Online (Sandbox Code Playgroud)

它会抛出同样的错误.

您必须在类签名中为泛型使用不同的名称

MyClass<T, U>
Run Code Online (Sandbox Code Playgroud)