我尝试使用有界类型参数创建接口,实现提供静态嵌套类来实现此参数,如下所示:
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)
答案 0 :(得分:1)
您错过了导入:
import com.example.MyClass.MyParameter;
虽然MyParameter
类型适用于getParameterInstance()
方法的返回类型,但MyClass
<{1}} <{1}}的绑定不适用于<T>