Java 带泛型参数的单例

Java 带泛型参数的单例,java,generics,singleton,Java,Generics,Singleton,如何创建我的实例 我总是会遇到编译错误 说明资源路径位置类型 无法对非静态类型的组件ComponentManager.java进行静态引用 package component; public class ComponentManager<COMPONENT extends Component> { private static ComponentManager<COMPONENT> instance = new ComponentManager<COMPONEN

如何创建我的实例

我总是会遇到编译错误

说明资源路径位置类型 无法对非静态类型的组件ComponentManager.java进行静态引用

package component;

public class ComponentManager<COMPONENT extends Component> {

private static ComponentManager<COMPONENT> instance = new ComponentManager<COMPONENT >();

private ComponentManager() {

}

public static ComponentManager<?> getInstance() {
    return instance;
}

}
封装组件;
公共类组件管理器{
私有静态ComponentManager实例=新ComponentManager();
私有组件管理器(){
}
公共静态组件管理器getInstance(){
返回实例;
}
}

如果
instance
为空,则将
newcomponentmanager()
行放入
getInstance()
方法调用构造函数,否则返回
instance

public class ComponentManager {

    private static ComponentManager instance;

    private ComponentManager() {

    }

    public static ComponentManager getInstance() {
        if (instance  != null) {

        } else {
            instance = new ComponentManager();
        }
        return instance;
    }

}

您的声明和实例化语法错误。创建如下“实例”:

private static ComponentManager<? extends Component> instance = new ComponentManager< >();

<代码>私有静态组件管理器。如果您获得编译错误并需要我们的帮助,请考虑将错误消息全部发布。如果您有自己的组件类,您可能缺少一个导入语句。从您的代码中,您需要N个单子,每个都是“代码>组件< /代码>的子类?如果是这种情况,由于类型擦除,它将不起作用。我想在没有If条件的情况下执行getInstance()。它应该并且确实对我起作用,至少对编译是这样。Java7增加了有限的类型推断功能@达维德007。啊!!很抱歉这是我的错。它编译得很好。