黑马程序员技术交流社区

标题: 程序调用问题 [打印本页]

作者: 小黑马    时间: 2012-9-7 16:20
标题: 程序调用问题
package com.heima.factory;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

import com.heima.dao.UserDao;

public class DaoFactory1 {
   
    public static void main(String[] args){//这个是工厂类,main是为了测试
        DaoFactory1 factory1 = DaoFactory1.getInstance();
        UserDao dao = factory1.getDao();
        System.out.println(dao);
        
    }
    private static DaoFactory1 factory = new DaoFactory1();
    private static UserDao userDao = null;
    private DaoFactory1(){   
        try {
            Properties prop = new Properties();            
/*            此种方法不够灵活,配置文件换了位置就找不到了
            InputStream is = new FileInputStream("src"+File.separator+"daoconfig.properties");   
            
*/            
            InputStream is = DaoFactory1.class.getClassLoader().getResourceAsStream("daoconfig.properties");
            prop.load(is);            
            String clazzName = prop.getProperty("userDaoClass");        
            System.out.println("aa");  //执行了
            Class clazz =  Class.forName(clazzName);
            System.out.println("bb");   //执行了
            UserDao user = (UserDao) clazz.newInstance();
            System.out.println(user); //对象有地址
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    };   
    public static DaoFactory1 getInstance(){
        return factory;
    }
    public static UserDao getDao(){        
        return userDao;
    }
}
这是一个工厂类,为了实例化UserDao返回实例化对象userDao
执行结果
aa
bb
com.heima.dao.impl.UserDaoJdbcImpl@186d4c1
null

为什么最后返回是null值呢?



作者: 魏-玉-彪    时间: 2012-9-7 16:31
{:soso_e128:}
作者: 李秀昂    时间: 2012-9-7 18:41
本帖最后由 李秀昂 于 2012-9-7 18:44 编辑

private static UserDao userDao = null;
...
UserDao user = (UserDao) clazz.newInstance();

你定义了一个成员变量UserDao通过工厂里的getDao()方法返回了UserDao的实例,但是你的程序里面根本没有给它赋值,下面这句里面就不要重新定义一个UserDao,直接赋值给这个成员变量userDao就行了。





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