现在的位置: 首页 > 综合 > 正文

边走边总结

2013年07月01日 ⁄ 综合 ⁄ 共 1338字 ⁄ 字号 评论关闭

1.在finally 里面使用 return 或 new throw()之类语法会引起编译器警告

2.关于InstantiationException错误的原因(转)
could not initialization Dammanage:com.ibatis.dao.client.DaoException: Error while configuring DaoManager.   Cause: com.ibatis.dao.client.DaoException: Error configuring DAO.   Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: com.ibatis.dao.client.DaoException: Error configuring DAO.   Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.InstantiationException: com.finance.ProductDaoImpl

java.lang.InstantiationException从字面意思上来看是说不能实例化ProductDaoImpl类,出现这种异常的原因通常情况下是由于要实例化的对象是一个接口或者是抽象类等无法被实例化的类。但是在这次的错误中却是个例外,这个错误是由持久类Product引发的,ProductDaoImpl类是我用来查询结果的操作方法集合,它继承了HibernateTemplateDao类,实现了ProductDao接口,这个问题困扰了本人很久,经过网络上的查询得到启发:发现产生这个错误的原因是持久类Product中没有不带参数的构造方法,因为iBATIS在对象建立中,会使用不带参数的构造函数来建立对象,而现在我的Product类中只有一个带参数的构造方法以及一系列的getter/setter方法。只需要在Product类中加入一个不带参数的构造方法,该方法不必执行任何操作,就像默认的构造方法一样。在Hibernate中就有明确的要求:每一个持久化类都必须带一个不带参数的构造方法。

这个问题在使用类反射实例化某个对象时,如果这个对象不包含无参数的构造函数,也会出现这个错误,解决办法是在这个要通过类反射实例化的这个类中添加一个空的无参数构造函数就可以了.

3.ThreadLocal相关
ThreadLocal 并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。

抱歉!评论已关闭.