小编San*_*eev的帖子

Singleton Factory - 使用Java 8实现

我想实现一个通用的单件工厂模式,我将所需对象的Class作为参数传递,如果已经为它创建了一个对象,工厂类应检查映射,如果它已经从map返回该对象.如果没有,请创建一个新实例,将其放在地图中并返回实例.

我可以将泛型返回类型作为Object,但我不想在我调用get实例方法的每个地方强制转换返回的对象.

下面是代码:我在c.cast(实例)行收到编译错误;

我们不使用spring/dependency注入,而是尝试实现公共类来处理创建所有单例对象.

提前致谢.

public class SingletonFactory {
    public static Map<String,Object> objectFactory = new HashMap<String, Object>();

    public static <T extends Object> T getInstance(Class<?> c){
    String key = c.toString();
    Object instance= objectFactory.get(key);
    if(instance == null){
        synchronized (c) {
            try{
                instance = c.newInstance();
                objectFactory.put(key, instance);
            }catch(IllegalAccessException | InstantiationException e){
                throw new RuntimeException("Exception while creating singleton instance for class : "+key+" - Exception Message : "+e);
            }
        }
    }
    return c.cast(instance);
}
Run Code Online (Sandbox Code Playgroud)

}

java singleton generic-programming

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

标签 统计

generic-programming ×1

java ×1

singleton ×1