相关疑难解决方法(0)

如何在java中参数化泛型单例

我有下一个问题.我有一个界面:

public interface Worker<T> {
    public void start(Class<? extends T> taskClass);
}
Run Code Online (Sandbox Code Playgroud)

和单接口实现此接口:

public final class Listener<T extends Runnable> implements Worker<T> {
    private Listener() {}

    @Override
    public void start(Class<? extends T> taskClass) { ... }

    public static Listener getInstance() {
        return SingletonHolder.INSTANCE;
    }

    private static class SingletonHolder {
        public static final Listener INSTANCE = new Listener();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以通过这种方式得到单例实例:

Worker<Thread> listener = Listener.getInstance();
Run Code Online (Sandbox Code Playgroud)

还是类型安全吗?什么时候不能,如何在单例实例中使用泛型?

java generics type-safety

3
推荐指数
1
解决办法
5030
查看次数

标签 统计

generics ×1

java ×1

type-safety ×1