黑马程序员技术交流社区

标题: 意外收获,竟然用着用着就用会了泛型了。。 [打印本页]

作者: 彭昆    时间: 2013-1-4 22:30
标题: 意外收获,竟然用着用着就用会了泛型了。。
  1. public class ObjectFactory {
  2.                   private static ResourceBundle rb;
  3.                   static{
  4.                                  rb=ResourceBundle.getBundle("factory");
  5.                   }

  6.           private static ObjectFactory instance=new ObjectFactory();
  7.        
  8.                   private ObjectFactory(){}
  9.        
  10.                   public static ObjectFactory getInstance(){
  11.                                        return instance;
  12.           }
  13.          //根据配置文件返回不同的对象,当然调用的时候得传个配置文件中的key过来
  14.           public <T>T getUserDaoImpl(String type){
  15.                                   try {
  16.                                                     return (T) Class.forName(rb.getString(type)).newInstance();
  17.                   } catch (Exception e) {
  18.                                                    e.printStackTrace();
  19.                                                    throw new ExceptionInInitializerError(e);
  20.                                 }
  21.           }
复制代码

作者: 希望的曙光    时间: 2013-1-5 01:48
你这是工厂模式和单例模式
泛型混在一起有点晕,那位同给解释一下
作者: 彭昆    时间: 2013-1-5 22:28
希望的曙光 发表于 2013-1-5 01:48
你这是工厂模式和单例模式
泛型混在一起有点晕,那位同给解释一下

这个就是根据所传的type动态返回实例,我们的这个type其实就是properties文件中的key,这个key对应一个类的包名加类名,所以我想要哪个类的实例就可以传个type,然后通过反射动态返回即可。如果不用泛型,那么必须写多个对应的返回不同类型对象的方法。但这些方法99%相同,只是返回对象不同,所以可使用泛型。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2