奇怪的指针问题

wweijie 2004-09-07 11:32:54
函数定义:
public void createConnection(Connection conn, OperateDB db) {
conn = getConnection(conn);
db = new OperateDB(conn);
}

调用方法:
Connection conn = null;
OperateDB db = null;
createConnection(conn, db);
cb = db.getData(sql, iPageNo, iRowNum);//问题在这里,createConnection已经初始化了conn和db,但是在db.getDate这条语句的时候,db是null,conn也是null.
...全文
51 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wweijie 2004-09-10
没有人愿意继续讨论吗?分数我会加的
回复
wweijie 2004-09-08
按照在其他语言中的经验,参数是class,传的就是指针,在函数内部改变了参数的值可以反映到函数的外部,只要是这个变量的有效范围都可以,但是java却不是这样
我感觉这是一个很好的问题,让我们深入了解java,大家继续讨论
回复
wweijie 2004-09-08
to learnner( ) :conn = getConnection(conn) 可以创建连接,没有错误,conn的值也不为空
to mtou(逆风):调用db = new OperateDB(conn)以后db值并不为null

一个朋友的解释是java中没有指针的概念,是不能通过指针来修改值的。基本与unsalted(icebird)的观点一致
谢谢大家


回复
unsalted 2004-09-07
修改成下面这样吧。
public OperateDB createConnection(Connection conn) {
Connection conn1 = getConnection(conn);
OperateDB db = new OperateDB(conn);
return db;
}
调用方法:
Connection conn = null;
OperateDB db = null;
db = createConnection(conn);
cb = db.getData(sql, iPageNo, iRowNum);
回复
mtou 2004-09-07
调用
db = new OperateDB(conn);
以后
db值是多少
回复
unsalted 2004-09-07
虽然在createConnection里有这样的db = new OperateDB(conn);但是参数是不会被改变的。所以仍然会扔出空指针异常,改成
OperateDB db = new OperateDB();
回复
learnner 2004-09-07
检查看你的 conn = getConnection(conn) 这样可以创建连接吗
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-07 11:32
社区公告
暂无公告