「参照渡し」と「参照の値渡し」
@shunka_zwei そうですよ。ポインタ渡し(ポインタの値渡し)が参照渡しでないように、参照の値渡しは参照渡しではない、と、そういう話です。
2011-12-07 15:30:21「参照渡し」という用語の誤用、だけじゃなくて、この場合そもそもIntegerがmutableじゃねえ、という別の問題もあるけど、根深いなあ。 #java
2011-12-07 19:29:27C++の参照パラメータやPascalのvar変数は明らかに参照渡しですが、JavaだとCのポインタ渡しに近い感覚で一般に参照渡しと呼んでいるのかも。ポインタがないからポインタ渡しでは変なので。
2011-12-07 21:06:00Javaの世界では参照型のパラメータを渡すことを参照渡しと呼ぶことが多いと思いますが、.NETの人にはByRef、ByValとかあるから参照の値渡しと参照渡しを厳密に区別するのかな。 / “参照渡し” http://t.co/NZcFmxlw
2011-12-07 21:09:51@kis 文献などでは参照渡しと呼んでいるものが多い気もしますが、やはりだめですかね、その用法は。モヒカンな人には絶対怒られそうな気もしますがw。
2011-12-07 21:13:32Java never call by reference. / “call by reference : Java Glossary” http://t.co/qNVAMyze
2011-12-07 21:16:07@ryoasai74 他の言語の「参照渡し」と違ってJava独自の用語になってしまうので、用語としての汎用性がなくなってしまいそうです。Java使いの中でも言葉の意味が違うという事態に。
2011-12-07 21:19:30@kis 自分としては今後使わないようにしたいと思いますが、結構今までJavaの参照渡しという言葉を頻繁に聞いたり読んだりした記憶があったのですが、どこだったかな。たとえばリモートインターフェースはパラメータが値渡しだから引数の副作用に注意せよとか。
2011-12-07 21:23:05@ryoasai74 初期は「Javaは全部参照渡し」みたいな文脈も多かった気がします。最近はそういう文章をみかけないですね。それは参照渡しであるかどうかが話題に出ないという感じではあるんですけど。
2011-12-07 21:25:08@kis 実際Java言語では基本型以外は配列を含めて参照型という強いルールがあって、intが参照渡しか値渡しかを気にしないですからね。そして、mutableなオブジェクトであれば実質out変数的に使えるから、このような独自の用法が広まったのかもしれませんね。
2011-12-07 21:30:17@ryoasai74 んー一般的に「参照渡し」というと.NETでいうところのByRefみたいなのを示すんじゃないかなー。Pascalにすらある概念なんだし。
2011-12-08 01:13:59Pascal用語の「変数渡し」のほうが、意味的には分かりやすいのかもしれないな。変数渡しの実装方法のひとつとして参照渡しがあるだけではあるが。
2011-12-08 01:15:58@ikeike443 pascalのvar渡しが参照渡しです。javaでは同じ事ができません。
2011-12-08 01:27:32@ikeike443 C++ の参照と Java の参照は違いますね. Java しか知らないときに C++ の方を見てびっくりしました. http://t.co/R8yJY2Kw
2011-12-08 01:29:15