Java布尔类型的问题
packageorg.lxh.useradmin.dao.proxy;importjava.util.List;importorg.lxh.useradmin.dao.I...
package org.lxh.useradmin.dao.proxy;
import java.util.List;
import org.lxh.useradmin.dao.IUserDAO;
import org.lxh.useradmin.dao.impl.IUserDAOImpl;
import org.lxh.useradmin.dbc.DataBaseConnection;
import org.lxh.useradmin.vo.User;
public class IUserDAOProxy implements IUserDAO {
private DataBaseConnection dbc = null;
private IUserDAO dao = null;
public IUserDAOProxy() {
this.dbc = new DataBaseConnection();
this.dao = new IUserDAOImpl(this.dbc.getConnection());
}
@Override
public boolean doCreate(User user) throws Exception {
boolean flag = true;
try {
flag = this.dao.doCreate(user);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
方法中“boolean flag = true;”不是为flag赋予了一个"true"值吗?怎么捕获异常时怎么还能flag = this.dao.doCreate(user); ?谁能解析下doCreate(User user)这个方法? 展开
import java.util.List;
import org.lxh.useradmin.dao.IUserDAO;
import org.lxh.useradmin.dao.impl.IUserDAOImpl;
import org.lxh.useradmin.dbc.DataBaseConnection;
import org.lxh.useradmin.vo.User;
public class IUserDAOProxy implements IUserDAO {
private DataBaseConnection dbc = null;
private IUserDAO dao = null;
public IUserDAOProxy() {
this.dbc = new DataBaseConnection();
this.dao = new IUserDAOImpl(this.dbc.getConnection());
}
@Override
public boolean doCreate(User user) throws Exception {
boolean flag = true;
try {
flag = this.dao.doCreate(user);
} catch (Exception e) {
throw e;
} finally {
this.dbc.close();
}
return flag;
}
方法中“boolean flag = true;”不是为flag赋予了一个"true"值吗?怎么捕获异常时怎么还能flag = this.dao.doCreate(user); ?谁能解析下doCreate(User user)这个方法? 展开
3个回答
展开全部
你的异常可能是空指针异常吧。
前面的boolean flag = true;是给这个flag初始化一个值,
下面flag = this.dao.doCreate(User);是利用doCreate这个方法获得一个值,如果可以获得,这个值就覆盖了flag的默认值。
所以,这个方法的作用就是,如果可以通过this.dao.doCreate()这个方法获得值的话,就给flag;如果不能,或出现问题则flag值为默认的true。
如果是空指针的话,有可能是this.dao.Create()这个方法中有空指针,也不一定是flag这个值为空!
空指针异常一般指,在方法调中,调用的一方为空。比如this.dao.Create()这个方法中如果this或者this.dao或者Create方法 有一个是空的都会判定这句话是空指针,而不是指flag为空
前面的boolean flag = true;是给这个flag初始化一个值,
下面flag = this.dao.doCreate(User);是利用doCreate这个方法获得一个值,如果可以获得,这个值就覆盖了flag的默认值。
所以,这个方法的作用就是,如果可以通过this.dao.doCreate()这个方法获得值的话,就给flag;如果不能,或出现问题则flag值为默认的true。
如果是空指针的话,有可能是this.dao.Create()这个方法中有空指针,也不一定是flag这个值为空!
空指针异常一般指,在方法调中,调用的一方为空。比如this.dao.Create()这个方法中如果this或者this.dao或者Create方法 有一个是空的都会判定这句话是空指针,而不是指flag为空
展开全部
flag = this.dao.doCreate(user);
this.dao.doCreate(user)这个方法你可以按住ctrl然后点击doCreate..
不出意外的话应该是父类的方法了..
所以他让flag=父类的那个方法的返回值..
实际上就是跟直接调用父类那个方法的效果是一样的..
方法中“boolean flag = true;”不是为flag赋予了一个"true"值吗?怎么捕获异常时怎么还能flag = this.dao.doCreate(user); ?
这个问题..一个变量你给他赋个值后当然还可以重新给他一个撒..
flag = this.dao.doCreate(user);就是重新赋值..
this.dao.doCreate(user)这个方法你可以按住ctrl然后点击doCreate..
不出意外的话应该是父类的方法了..
所以他让flag=父类的那个方法的返回值..
实际上就是跟直接调用父类那个方法的效果是一样的..
方法中“boolean flag = true;”不是为flag赋予了一个"true"值吗?怎么捕获异常时怎么还能flag = this.dao.doCreate(user); ?
这个问题..一个变量你给他赋个值后当然还可以重新给他一个撒..
flag = this.dao.doCreate(user);就是重新赋值..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是这样的
IUserDAOProxy只是IUserDAO的一个实现模式(可以参见设计模式中的代理),在实际的环境中,具体IUserDAO的实现类并不一定只是IUserDAOProxy,IUserDAOProxy只是公开的一个实现类,那么我举个例子来说明这个好处吧:
如:权限管理中,我们针对不同的用户权限定制了不同的IUserDAO实现类,管理员为:AdminDAO extends IUserDAO,匿名用户为:GuessDAO extends IUserDAO,那么在IUserDAOProxy类中,private IUserDAO dao的实例并不是IUserDAOProxy本身,而是AdminDAO或GuessDAO,那么他们实现的doCreate方法是不一样的,这样可以在不修改原有代码的基础上不断定义新的IUserDAO实现类来扩充系统的功能,真正实现开-闭原则(具体请参考设计模式一书)。
而在楼主提供的代码中,实现的实现类是IUserDAOImpl。IUserDAOProxy只是提供了一种默认的返回机制(也就是说你的IUserDAO实现类中的doCreate方法什么都不做,也可以让你的代码能按照你想要提供的默认方式执行)。
IUserDAOProxy只是IUserDAO的一个实现模式(可以参见设计模式中的代理),在实际的环境中,具体IUserDAO的实现类并不一定只是IUserDAOProxy,IUserDAOProxy只是公开的一个实现类,那么我举个例子来说明这个好处吧:
如:权限管理中,我们针对不同的用户权限定制了不同的IUserDAO实现类,管理员为:AdminDAO extends IUserDAO,匿名用户为:GuessDAO extends IUserDAO,那么在IUserDAOProxy类中,private IUserDAO dao的实例并不是IUserDAOProxy本身,而是AdminDAO或GuessDAO,那么他们实现的doCreate方法是不一样的,这样可以在不修改原有代码的基础上不断定义新的IUserDAO实现类来扩充系统的功能,真正实现开-闭原则(具体请参考设计模式一书)。
而在楼主提供的代码中,实现的实现类是IUserDAOImpl。IUserDAOProxy只是提供了一种默认的返回机制(也就是说你的IUserDAO实现类中的doCreate方法什么都不做,也可以让你的代码能按照你想要提供的默认方式执行)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询