public class DaoFactory{
private static DaoFactory instance = new DaoFactory();
private static UserDao userDao = null;
private DaoFactory(){
try{
Properties prop = new Properties();
InputStream inStream = new FileInputStream(new File("src/daoconfig.properties"));
prop.load(inStream);
String userDaoClass = prop.getProperty("userDaoClass");
Class clazz = Class.forName(userDaoClass);
userDao = (UserDao)clazz.newInstance();
System.out.println(userDao);
}catch(Throwable e){
throw new ExceptionIninitiallizerError(e);
}
}
public static DaoFactory getInstance(){
return instance;
}
public static UserDao getUserDao(){
System.out.println(userDao);
return userDao;
}
}
下面我们调用这段代码:
DaoFactory.getInstance().getUserDao();
//注意:报错了哈
原因。。。。
1。执行:
private static DaoFactory instance = new DaoFactory();
2。在静态方法里面,也就是一加载到JVM的时候就执行构造函数
所以private DaoFactory(){
try{
Properties prop = new Properties();
InputStream inStream = new FileInputStream(new File("src/daoconfig.properties"));
prop.load(inStream);
String userDaoClass = prop.getProperty("userDaoClass");
Class clazz = Class.forName(userDaoClass);
userDao = (UserDao)clazz.newInstance();
System.out.println(userDao);
}catch(Throwable e){
throw new ExceptionIninitiallizerError(e);
}
}
被执行,并且我们能看到userDao 被赋值了,
3。private static UserDao userDao = null;
在userDao被赋值之后,他又被赋值为空了。。。
如何改呢。。?
private static UserDao userDao = null;
private static DaoFactory instance = new DaoFactory();
换顺序。。也就是说把所有的准备工作都做好之后再去new 他
分享到:
相关推荐
在面试中,面试官可能会通过这种类型的题目来评估应聘者对Java内存模型的理解,以及他们在编写代码时是否能考虑到这些初始化规则,从而避免潜在的陷阱。因此,掌握类的初始化顺序是每个Java开发者必备的知识点。
3. **初始化连接池**:通过`ComboPooledDataSource`类初始化连接池,并设置数据库连接信息。 4. **获取和归还连接**:使用`getConnection()`方法从连接池获取连接,使用完毕后,调用`close()`方法归还连接回池,而...
《基于OCR技术的图片文字识别——深度解析百度aip-java-sdk-4.1.0》 在当今数字化时代,图像中的文字识别(OCR,Optical Character Recognition)技术扮演着至关重要的角色,它使得计算机能够自动识别并转换图像中...
这个压缩包“aliyun-java-sdk-dysmsapi.zip”包含了所有必要的类库和资源,以便在Java环境中使用阿里云的短信接口。 1. **DYSMSAPI介绍**: 阿里云DYSMSAPI(Dynamic SMS API)是阿里云提供的高可用、高稳定性的...
接下来,他们可以参考库提供的API文档或者示例代码,学习如何初始化ONVIF客户端,执行设备发现,连接到特定设备,以及执行各种ONVIF操作。 在开发过程中,需要注意的是,ONVIF设备的响应速度可能因网络状况和设备...
1. **初始化客户端**:使用AccessKey和AccessKeySecret创建DefaultAcsClient实例。 2. **构建请求**:创建SendSmsRequest对象,设置短信接收号码、模板代码和模板参数。 3. **发送请求**:通过客户端调用sendSms...
在"ckeditor-java-core-3.5.3"压缩包中,通常会包含CKEditor的Java API接口文档,这些接口允许开发者控制编辑器的行为,如初始化编辑器、设置和获取编辑器内容、处理用户事件等。此外,还可能有CKEditor的核心...
连接池预先初始化一定数量的连接,并在需要时提供给应用程序,用完后归还,避免了频繁创建和关闭连接的开销。 此外,`mysql-connector-java-8.0.20.jar`还支持多种配置选项,例如设置超时、SSL连接、字符集、事务...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
java编程思想-初始化与清理了解this之后,你就能更全面地理解“静态(static)方法”的含义。静态方法就是没有this的方法。在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。而且你可以在没有创建...
例如,使用AipOcr类来调用文字识别服务,初始化客户端需要提供应用ID、API密钥和超时设置等参数。之后,可以调用特定的方法如basicGeneral()或advancedGeneral()来进行通用文字识别或复杂场景的文字识别。 在实际...
S7-300 初始化的方法 S7-300 是一种高性能的可编程逻辑控制器(PLC),广泛应用于工业自动化领域。为了确保 S7-300 的正常运行,初始化是必不可少的一步。本文将详细介绍 S7-300 初始化的方法,包括微存储卡 MMC 的...
9. **集成示例**:使用这个SDK时,开发者通常需要参考官方文档或示例代码来学习如何初始化客户端、配置访问权限、调用API等功能。 10. **错误处理和调试**:SDK会提供丰富的错误处理机制,帮助开发者诊断和解决问题...
【极光推送JAVA服务端集成 jpush-api-java-client-master】是一个专门为Java开发者设计的极光推送(JPush)服务端SDK。极光推送是面向移动应用开发者提供的一套消息推送服务,它可以帮助开发者轻松实现向Android、...
在本案例中,我们关注的是其Java SDK的版本2.1.4,即"yop-java-sdk-2.1.4.zip"。这个压缩包包含了开发人员在Java环境中集成易宝支付功能所需的所有组件和示例代码。 首先,让我们深入理解易宝支付SDK的核心概念: ...
2. **初始化连接**:启动程序时,初始化FastDFS客户端,建立与Tracker Server的连接。 3. **文件上传**:通过客户端API将本地文件上传至FastDFS系统,上传过程中,FastDFS会自动进行负载均衡和文件复制,确保高可用...
Jenkins安装包,可直接使用 java -jar jenkins.war --httpPort=8080启动
配置C3P0时,开发者可以通过调整各种参数来优化性能,如初始化连接数、最大连接数、超时时间等。 接下来是MySQL的JDBC驱动,即mysql-connector-java-5.1.37。这是MySQL官方提供的用于Java应用程序与MySQL数据库进行...
《华为OBS SDK详解——基于esdk-obs-java-3.20.3.zip的实践指南》 在当今数字化时代,云存储服务已经成为企业和个人存储大量非结构化数据的重要工具。华为的对象存储服务(Object Storage Service,简称OBS)正是...
\ssmukwx2\db\`:这个目录可能包含了项目的数据库脚本,比如创建表、初始化数据等。 - `??java?-39-12-?????????-??\ssmukwx2\src\`:源代码根目录,包含了项目的所有源码文件。 - `??java?-39-12-?????????-??\...