[問題] java的call by reference
首先 先來個簡單到爆表的程式 大家都知道 下面的程式一定會發生
null pointer exception
public class Factory{
public Factory(){
Object obj = null;
createObject(obj);
>>exception<< System.out.println(obj.toString());
}
public void createObject(Object obj){
obj = new Object();
}
public static void main(String args[]){
new Factory();
}
}
這邊的例外 相當理所當然,但我最近在想 java 不是 call by reference的嗎
但 以下的 c++ 卻能正常運作
#include <iostream>
class Object{
public:
int value;
};
void dodo(Object*& obj){
obj = new Object();
obj->value = 10;
}
void main(){
Object* obj;
dodo(obj);
std::cout << obj->value;
}
這邊我pass pointer 的 reference到 function dodo,但卻正常運作了
難道!?! java不是這樣運作的????
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.48.108
推
04/07 19:34, , 1F
04/07 19:34, 1F
→
04/07 19:36, , 2F
04/07 19:36, 2F
→
04/07 22:28, , 3F
04/07 22:28, 3F
→
04/07 23:12, , 4F
04/07 23:12, 4F
推
04/07 23:26, , 5F
04/07 23:26, 5F
推
04/07 23:27, , 6F
04/07 23:27, 6F
→
04/07 23:59, , 7F
04/07 23:59, 7F
→
04/08 00:11, , 8F
04/08 00:11, 8F
推
04/08 00:15, , 9F
04/08 00:15, 9F
→
04/08 00:57, , 10F
04/08 00:57, 10F
推
04/08 07:51, , 11F
04/08 07:51, 11F
→
04/08 12:41, , 12F
04/08 12:41, 12F
→
04/08 21:42, , 13F
04/08 21:42, 13F
→
04/08 21:47, , 14F
04/08 21:47, 14F
→
04/08 21:50, , 15F
04/08 21:50, 15F
推
04/15 04:32, , 16F
04/15 04:32, 16F
→
04/15 04:38, , 17F
04/15 04:38, 17F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):