- PR -

戻り値について

1
投稿者投稿内容
ダメ猫
常連さん
会議室デビュー日: 2004/02/20
投稿数: 45
投稿日時: 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();
}
}

こんな感じで書いたのですがエラーが出ません・・・
これでも大丈夫なのですか?
エラーは出ないのでこのまま使おうと思うのですが・・・

初歩的な質問ですいません
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-05 20:08
ご認識の通り、必要ありません。
C言語にはあまり明るくないのですが同じではないでしょうか?
printf の戻り値はあんまり使いませんよね・・・?

[ メッセージ編集済み 編集者: インギ 編集日時 2004-03-05 20:13 ]
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-03-06 23:28
ダメ猫さん、こんにちは。

Cでもエラーは出ないですよ。
警告を出してくれる処理系はあるかもしれませんが。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-03-07 19:23
unibon です。こんにちわ。

余談になりますが、どの言語でも、戻り値を無視しても警告が出ないことがほとんどですよね。変数に代入しただけでその後一切参照しない変数は警告してくれることが多いのに、戻り値を無視しても警告が出ないのは釣り合いが取れていないような気もします。
戻り値を戻す(返り値を返す)からにはそれなりの理由があるからなので、それを無視するのはやはりイレギュラーな場面だと思います。
警告できるようにすることも極めて容易すぎるので、いまさら付けるのも恥ずかしくてあえてコンパイラに警告機能を設けていないのかな、と思いましたが、Eclipse などの開発ツールにはぜひ付けて欲しい機能です。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-03-07 19:36
引用:

unibonさんの書き込み (2004-03-07 19:23) より:
警告できるようにすることも極めて容易すぎるので、いまさら付けるのも恥ずかしくてあえてコンパイラに警告機能を設けていないのかな、と思いましたが、



警告しだしたら、あまりに大量の警告がですぎて困るからではないでしょうか。
CやJavaで言語仕様として戻り値を意図的に使ってません、
ということを表現する手段もないですし。
#VB6以前のVBなら、戻り値を使用しないことを明示するのにCall文を使う手はありますね。

既にあがっている例ですが、C言語のprintfのようなほとんどの場合で戻り値を
使わない場合もあるでしょうし、そういうパターンが以外と多いのかも。
(調べてみたことはないです)

引用:

Eclipse などの開発ツールにはぜひ付けて欲しい機能です。



CheckStyleプラグインの設定項目にないですかね?
#う〜ん、なかったような気もします・・・
bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2004-03-07 22:50
引用:

戻り値を戻す(返り値を返す)からにはそれなりの理由があるからなので、それを無視するのはやはりイレギュラーな場面だと思います。



参照で渡した引数に必要な値が戻り、関数/メソッドの戻り値は補足情報である場合(まさに、printf 系)は、無視するしないは呼び出し側の選択で良いのではないでしょうか。
例外処理が出来る言語であっても、常にダミーの変数が必要になって不便じゃないですかね。
よねKENさんも書いてますが、以前の VB で戻り値を無視するために CALL を使わなきゃいけなかったのは嫌いな仕様の一つでした。

警告レベルだとしても、通常の警告レベルでは不要で、厳しいチェックを指定した時にだけ警告してくれれば十分だと思います。(少なくとも、C & Java 系では)
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-03-07 23:16
unibon です。こんにちわ。

引用:

bubunyaさんの書き込み (2004-03-07 22:50) より:
参照で渡した引数に必要な値が戻り、関数/メソッドの戻り値は補足情報である場合(まさに、printf 系)は、無視するしないは呼び出し側の選択で良いのではないでしょうか。
例外処理が出来る言語であっても、常にダミーの変数が必要になって不便じゃないですかね。


たしかにご指摘のとおりですね。たとえば、
コード:
List list = new ArrayList();
list.add("abc");


で警告が出るから、
コード:
List list = new ArrayList();
boolean b = list.add("abc");


としても、こんどは b を参照していないという警告が出てしまいますね。

でも、一方で、たとえば、String.indexOf の返り値を見ないのは絶対不自然ですよね。例外のチェック例外と非チェック例外の違いのような区別が、戻り値にもあっても良いのかも、とも思いました。
未記入
会議室デビュー日: 2004/03/07
投稿数: 1
投稿日時: 2004-03-07 23:33
引用:

CやJavaで言語仕様として戻り値を意図的に使ってません、
ということを表現する手段もないですし。



(void)printf(...);

というコードを見たことがあります。
戻り値をvoidにキャストすることで、使わないことを明示するんだそうです。
1

スキルアップ/キャリアアップ(JOB@IT)