使用静态嵌套类作为泛型参数

时间:2015-11-07 09:03:58

标签: java generics

我尝试使用有界类型参数创建接口,实现提供静态嵌套类来实现此参数,如下所示:

public interface InterfaceProblem<T extends IMyParameter>{
    T getParameterInstance();
}

interface IMyParameter {}

class MyClass implements InterfaceProblem<MyParameter> {
    public MyParameter getParameterInstance() {
        return new MyParameter();
    }

    class MyParameter implements IMyParameter{}
}

这给了我一个编译错误&#34; MyParameter无法解析为类型&#34;关于MyClass声明及其方法。如果我将静态类移动到它自己的类型,这会消失:

class MyClass implements InterfaceProblem<MyParameter> {
    public MyParameter getParameterInstance() {
        return new MyParameter();
    }
}

class MyParameter implements IMyParameter{}

但是,我想避免这种情况,因为MyParameter实现与MyClass实现密切相关。有没有更好的方法来实现这个目标?这是正确的编译器行为吗? (我使用Eclipse Mars和Oracle jdk1.8.0_60)

1 个答案:

答案 0 :(得分:1)

您错过了导入:

import com.example.MyClass.MyParameter;

虽然MyParameter类型适用于getParameterInstance()方法的返回类型,但MyClass <{1}} <{1}}的绑定不适用于<T>