奇怪的指针问题

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.
...全文
88 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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) 这样可以创建连接吗

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧