Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(long... と long[] の違いについて)
閲覧数:625
掲示板(long... と long[] の違いについて)
名前
匿名
題名 long... と long[] の違いについて
質問内容

質問を評価する
(0ポイント)
java1.6を使用しています。

標題の件ですが、long[]ではなくlong...を使用するメリットは何でしょうか。
自分が今把握している違いは、
1.long...は単体での定義ができない。

long[] aList = {a,a,a};は定義可能だが、
long... bList = {b,b,b};はエラーになる。

2.メソッド変数で定義する際、
private void test1Func(long[] aList, long[] bList){};は勿論問題ないが、
private void test2Func(long... aList, long... bList){};
の場合は、aListがエラーになります。(最後に定義される引数でないと[...]表記が使えないらしい)

共通ロジックを修正していて、配列引数がひとつだけのfunctionにはlong...を使うよう言われたのですが、
long...のメリットは何なんでしょうか。
今のところ私には、使いにくく、わかりにくいだけに思えます。

WEBで調べても回答になる内容上手くヒットしませんでした。
説明が下手ですみませんが、判る方いらっしゃいましたら宜しくお願い致します。
質問日時 2012-12-17 17:45:01
名前
匿名
回答内容

回答を評価する
(30ポイント)
http://www.techscore.com/tech/Java/JavaSE/JavaLanguage/6/
回答日時 2012-12-17 21:34:24
名前
匿名
回答内容

回答を評価する
(10ポイント)
呼び出す側も楽だし、定義側で非nullが保証されるのもいい
ね。
実質的には同じものなんだけど。
回答日時 2012-12-17 21:37:17
名前
匿名
回答内容

回答を評価する
(10ポイント)
厳密には定義側での非nullは保障されません。
確かに引数無しで呼び出せば長さ0の配列になりますが、
引数にnullを指定された場合はnullが渡ってきますので
対処は必要かと思います。
回答日時 2012-12-18 10:27:36
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です。ご回答ありがとうございます。
>http://www.techscore.com/tech/Java/JavaSE/JavaLanguage/6/
URL、見つけられなかったのでとてもありがたいです。
下記知りませんでした。留意しておきます。
・メソッドがオーバーローディングされていて、引数が固定のメソッドと可変個のメソッドがマッチした場合、前者が優先される。

>呼び出す側も楽だし、
個要素をカンマ区切りで渡すだけでよいのは
目から鱗でした。

>定義側で非nullが保証される
ふむふむ。nullを許容しない場合使っておけばシンプルに書けますね。

的確なご回答ありがとうございました。
回答日時 2012-12-18 10:37:36
名前
匿名
回答内容

回答を評価する
(0ポイント)
>厳密には定義側での非nullは保障されません。
>確かに引数無しで呼び出せば長さ0の配列になりますが、

>引数にnullを指定された場合はnullが渡ってきますので
>対処は必要かと思います。

あ、確かに・・・nullを渡した場合は考えていませんでした。どこでどんな使われ方をされるか次第ですね。入りうるならばチェックは必須になりますね。

ありがとうございます。
回答日時 2012-12-18 10:41:49
名前
匿名
回答内容

回答を評価する
(0ポイント)
>引数にnullを指定された場合はnullが渡ってきます
おー、これは知らなかった。
可変引数にしてるのにわざわざnullを渡すなんて、さすがに考えたことがなかった。なるほど。
回答日時 2012-12-18 13:20:36

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道