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

标签 java generics

我正在尝试创建一个具有有界类型参数的接口(interface),并提供提供静态嵌套类来实现此参数的实现,如下所示:

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{}
}

这给我的 MyClass 声明及其方法带来了编译错误“MyParameter 无法解析为类型”。如果我将静态类移至其自己的类型,这种情况就会消失:

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

class MyParameter implements IMyParameter{}

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

最佳答案

您缺少导入:

import com.example.MyClass.MyParameter;

MyParameter类型在 getParameterInstance() 的范围内方法的返回类型,它不适用于 MyClass的绑定(bind) <T>

关于java - 使用静态嵌套类作为泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581013/

相关文章:

java - 文本旋转 libgdx

java - 设置对象数组时如何修复 FindBug 错误 'May expose internal representation by incorporating reference to mutable object'?

generics - 空接口(interface)与通用接口(interface)有何不同?

C# 泛型 : Inserting T as the where T : IComparable<T> interface conflict

java - 没有类型作为方法参数的泛型 - 无法解析它的字段类型

java - tomcat 错误 404 - 源服务器未找到目标资源的当前表示或不愿意透露该资源的存在

java - 无法使用 volatile 在线程之间共享列表值

java - 存储整数集以检查某个集合是否已被提及

c# - 如何初始化泛型类的列表

c# 退出使用 lambda 的泛型 ForEach