- - PR -
戻り値について
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-05 19:49
JAVAでの戻り値についてなのですが、受け取り側で戻り値を受け取らなくてもエラーは出ませんが大丈夫なのでしょうか?
C言語ではエラーが出たはずなのですが・・・ 例) public class Test { public String aaa(){ return "aaa"; } } public class test2 { public static void main(){ Test b = new Test(); b.aaa(); } } こんな感じで書いたのですがエラーが出ません・・・ これでも大丈夫なのですか? エラーは出ないのでこのまま使おうと思うのですが・・・ 初歩的な質問ですいません | ||||||||||||
|
投稿日時: 2004-03-05 20:08
ご認識の通り、必要ありません。
C言語にはあまり明るくないのですが同じではないでしょうか? printf の戻り値はあんまり使いませんよね・・・? [ メッセージ編集済み 編集者: インギ 編集日時 2004-03-05 20:13 ] | ||||||||||||
|
投稿日時: 2004-03-06 23:28
ダメ猫さん、こんにちは。
Cでもエラーは出ないですよ。 警告を出してくれる処理系はあるかもしれませんが。 | ||||||||||||
|
投稿日時: 2004-03-07 19:23
unibon です。こんにちわ。
余談になりますが、どの言語でも、戻り値を無視しても警告が出ないことがほとんどですよね。変数に代入しただけでその後一切参照しない変数は警告してくれることが多いのに、戻り値を無視しても警告が出ないのは釣り合いが取れていないような気もします。 戻り値を戻す(返り値を返す)からにはそれなりの理由があるからなので、それを無視するのはやはりイレギュラーな場面だと思います。 警告できるようにすることも極めて容易すぎるので、いまさら付けるのも恥ずかしくて | ||||||||||||
|
投稿日時: 2004-03-07 19:36
警告しだしたら、あまりに大量の警告がですぎて困るからではないでしょうか。 CやJavaで言語仕様として戻り値を意図的に使ってません、 ということを表現する手段もないですし。 #VB6以前のVBなら、戻り値を使用しないことを明示するのにCall文を使う手はありますね。 既にあがっている例ですが、C言語のprintfのようなほとんどの場合で戻り値を 使わない場合もあるでしょうし、そういうパターンが以外と多いのかも。 (調べてみたことはないです)
CheckStyleプラグインの設定項目にないですかね? #う〜ん、なかったような気もします・・・ | ||||||||||||
|
投稿日時: 2004-03-07 22:50
参照で渡した引数に必要な値が戻り、関数/メソッドの戻り値は補足情報である場合(まさに、printf 系)は、無視するしないは呼び出し側の選択で良いのではないでしょうか。 例外処理が出来る言語であっても、常にダミーの変数が必要になって不便じゃないですかね。 よねKENさんも書いてますが、以前の VB で戻り値を無視するために CALL を使わなきゃいけなかったのは嫌いな仕様の一つでした。 警告レベルだとしても、通常の警告レベルでは不要で、厳しいチェックを指定した時にだけ警告してくれれば十分だと思います。(少なくとも、C & Java 系では) | ||||||||||||
|
投稿日時: 2004-03-07 23:16
unibon です。こんにちわ。
たしかにご指摘のとおりですね。たとえば、
で警告が出るから、
としても、こんどは b を参照していないという警告が出てしまいますね。 でも、一方で、たとえば、String.indexOf の返り値を見ないのは絶対不自然ですよね。例外のチェック例外と非チェック例外の違いのような区別が、戻り値にもあっても良いのかも、とも思いました。 | ||||||||||||
|
投稿日時: 2004-03-07 23:33
(void)printf(...); というコードを見たことがあります。 戻り値をvoidにキャストすることで、使わないことを明示するんだそうです。 | ||||||||||||
1
