package com.example.utils;

import java.lang.reflect.Constructor;

public class DaoFactory {
    /** dao工厂类 用于生产某些dao接口的实例:无参的构造方法实例
     *
     * @param type 实例对象所在的类路径
     * */

    public static Object getInstance(String type) {
        // 获取相应子类的全限定名
        String path = DaoConfig.getValue(type);//读取配置文件:获取类路径
        Object obj = null;
        try {
            Class cl = Class.forName(path);
            obj = cl.newInstance();
            return obj;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }

    /**
     * 生产一个构造方法带参的实例
     * @param classParam :是参数类型:类类型
     * @param paramValues :是参数值
     */
    public static Object getInstance(String type,Class[] classParam,Object[] paramValues ){
        String path = DaoConfig.getValue(type);//读取配置文件:获取类路径
        Object obj = null;
        try {
            //根据类路劲获取类类型
            Class c = Class.forName(path);
            //调用构造方法,创建对象的Constructor对象,用他来获取构造方法的信息:即用其调用构造方法创建实例
            Constructor con = c.getConstructor(classParam);
            //调用构造方法并创建实例
            obj = con.newInstance(paramValues);
            return obj;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}



调用处:

构造方法带参:

Class[] params = {Context.class};//类类型
        Object[] values = {context};//类型值
        Log.i("infp", "params = "+params[0]+" values = "+values[0]);
        //生产一个实例
        more = (MoreDao)DaoFactory.getInstance(key,params,values);


构造方法不带参:
        Object obj = DaoFactory.getInstance(key);




详细请访问:http://j2megame.blog.163.com/blog/static/140838396201141623654269/


更多相关文章

  1. Android之DatePicker和TimePicker实现以及自定义大小
  2. Android中使用代码截图的各种方法总结
  3. Andoid自动判断输入是电话,网址或者Email的方法--Linkify
  4. Android——使用TabLayout+ViewPager实现顶部导航栏
  5. Android开发错误:Error:” ” is not translated in “en” (Engl
  6. ListViewAnimations 源码浅析
  7. Android之getSystemService方法实现详解
  8. xxx is not translated in yyy, zzz 的解决方法
  9. GPS在Android的使用经验

随机推荐

  1. 【Based Android】让你的android应用使用
  2. andriod环境的配置eclipse
  3. Android的隐私保护利器
  4. ANDROID 开机启动VNC SERVER
  5. Android手机搭建Linux服务器
  6. Android——用户登陆及用户名和密码的保
  7. android sdk 版本问题 R文件问题
  8. 新书内容连载(2):Android中的Activity的生命
  9. 再说说Intent Filter
  10. 该指数增长的Android应用市场