对于静态工厂的这个有点不太理解,请各位给通俗的讲一下,谢谢
网上说静态工厂的一个优点是:可以返回该类的任何子类
同时给了一小段代码:
import java.util.*; public abstract class Foo { private static Map implementations = null; private static synchronized void initMapIfNecessary() { if (implementations == null) { implementations = new HashMap(); 
} } public static Foo getInstance(String key) { initMapIfNecessary(); Class c = (Class) implementations.get(key); if (c == null) return new DefaultFoo(); try { return (Foo) c.newInstance(); } catch (Exception e) { return new DefaultFoo(); } } public static void main(String[] args) { System.out.println(getInstance("NonexistentFoo")); } } class DefaultFoo extends Foo { } 
标红的代码请给解释一下,implementations是一个hashMap,implementations.get(key)有什么意义呢?

解决方案 »

  1.   

    implementations是个HashMap<String,Class<Foo>>类型,implementations.get(key)返回的就是
    Class<Foo>类型,感觉你这代码逻辑上有点问题,因为implementations里面永远不会存放元素。
      

  2.   


    Class c = (Class) implementations.get(key)因为implementations是一个HashMap。
    比如:Map map = new HashMap();
    map.get(key)//这里就是取得这个key的value值。意义就是看implementations.get(key)里面有还是没有这个key。
    implementations.get(key)如果为空的话就new  DefaultFoo()
    不为空的话就是取得(Foo)c.newInstance()这个对象的类型。