//部分是本人本人加的,
本人想问,为什么明明没有用到传进来的clazz参数,却要传个clazz进来?
还有本人发现使用时代码是:
private BookDao bdao = (BookDao) DaoFactory.getInstance().createDao(
“xx.xx.xx.impl.BookDaoImpl”, Book.class);
这里莫非不应该是BookDao.class么?原因是本人觉得假如传一个BookDao.class是能够替换掉第一个参数的,用//处的方法也可以创建Dao,麻烦高手解答下,谢谢
Dao工厂代码如下:
public class DaoFactory {
private static final DaoFactory factory = new DaoFactory();
private DaoFactory(){}
public static DaoFactory getInstance(){
return factory;
}
public <T> T createDao(String className,Class<T> clazz){
try {
@SuppressWarnings(“unchecked”)
T t = (T) Class.forName(className).newInstance();
// T t = (T) clazz.newInstance();
return t;
} catch (Exception e) {
throw new RuntimeException();
}
}
}
本人想问,为什么明明没有用到传进来的clazz参数,却要传个clazz进来?
还有本人发现使用时代码是:
private BookDao bdao = (BookDao) DaoFactory.getInstance().createDao(
“xx.xx.xx.impl.BookDaoImpl”, Book.class);
这里莫非不应该是BookDao.class么?原因是本人觉得假如传一个BookDao.class是能够替换掉第一个参数的,用//处的方法也可以创建Dao,麻烦高手解答下,谢谢
Dao工厂代码如下:
public class DaoFactory {
private static final DaoFactory factory = new DaoFactory();
private DaoFactory(){}
public static DaoFactory getInstance(){
return factory;
}
public <T> T createDao(String className,Class<T> clazz){
try {
@SuppressWarnings(“unchecked”)
T t = (T) Class.forName(className).newInstance();
// T t = (T) clazz.newInstance();
return t;
} catch (Exception e) {
throw new RuntimeException();
}
}
}
解决方案
15
这段时间确实没看到什么意义,可能是为了扩展吧。
5
BookDao可能是接口吧,不能直接获取实例.