Javaプログラミング/Javaプログラミング関連情報

Java5の新文法をマスターしよう(5ページ目)

既にJava6の時代となりつつある今。Java5からサポートされた新文法についてしっかり理解しておきましょう。

執筆者:掌田 津耶乃

変数引数で好きなだけ引数を付ける


Javaのメソッドは、基本的に「あらかじめ指定しておいた引数の値を受け渡す」という形で定義されました。「いくつ引数があるかわからないけど、いくらでも付けられる」なんていうことはできませんでした。

けれど、実際問題として「不特定個の引数を指定できる」というメソッドがあるとずいぶんと便利とは思いませんか? こうした考えから用意されたのが、変数引数と呼ばれるものを使ったメソッド定義です。これは、引数の際に型名の後に「...」とドットを3つつけて宣言をします。こうすることで、その型の引数が不特定個受け渡せるようになります。

これは実際に見てみたほうが早いので例を挙げておきましょう。不特定個のStringを渡せるメソッドprintAllを定義し、これを使ってテキストを出力させています。

public class Main {
  private static String[] data = new String[]{"A","B","C"};
  
  public static void main(String[] args) {
    printAll("Welcome","to","Java.");
  }
  
  public static void printAll(String... arg){
    for (String str:arg){
      System.out.print(str + " ");
    }
  }
  
}


ここでは、printAll(String... arg)というようにして不特定個のStringを引数にもてるようにしてあります。「だけど、不特定個の引数をどうやって処理すればいいんだ?」と思った人。そのあとの行を見てみましょう。for (String str:arg) というようにして処理していますね。そうなのです。不特定個の引数は、そのまま配列として扱うことができるのです。

このようにして宣言したメソッドは、いくつでもStringを引数にして渡すことができるようになります。

printAll("Helo");
printAll("Helo","Java");
printAll("Helo","Java","World");


こんな具合に、必要なだけStringを引数にして渡せるのです。これは、実際に使ってみるとかなり便利です。また拡張されたforと併用することで、メソッド内の処理も意外とシンプルにおさまります。作るのも簡単、利用も簡単。しかも便利とくれば、使わない手はないでしょう?


――今回は、とりあえずJava5の最も重要な拡張文法である「総称型」「拡張for構文」「列挙型」「変数引数」の4点に絞って紹介しました。どれも非常に重要なものですし、Java5の特徴をもっともよく現しているものといえます。

これらの共通した特徴、それは「プログラマがいかにしてエラーを誘発するコードを書かないで済むようにするか」ということです。これらの新文法を利用することで、プログラマはケアレスミスによるバグを完全に追放することができます。コンパイルさえできればエラーは起こらない。それを保障してくれるのです。

Javaは、非常に大きな言語に発展しました。そのため、プログラマにかかる負担もかなり大きくなってきています。Java5の新文法は、「いかにしてプログラマの負担を軽減するか」という点から考えられています。「なんだか使うのが難しそう」と思っていた人。実は、逆なのです。新文法を使ったほうが、プログラマは楽にコードを書けるのです。この点を忘れないでください。

「機能が増えたから更に大変になった」のではありません。「機能が増えたおかげで楽になった」――これがJava5の新文法の最大の特徴といってよいでしょう。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます