黑马程序员技术交流社区
标题:
程序调用问题
[打印本页]
作者:
小黑马
时间:
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