Java Generics の Enhhanced for-loop のメリットとは?

このQ&Aのポイント
  • JavaのGenericsを使用すると、プログラム・コーディングを簡略化できるメリットがあります。
  • Enhhanced for-loopは要素の繰り返し処理を簡潔に記述することができるため、コーディングの効率性が向上します。
  • しかし、Enhhanced for-loopは途中で処理を止めることができないため、要件に合わない場合は他の方法を検討する必要があります。
回答を見る
  • ベストアンサー

Java Generics の Enhhanced for-loop におけるメリット

私自身JAVAに明るくないのですが、なぜか更に分かっていない人にプレゼンをすることになってしまいました。プレゼン内容は「JAVAプログラム・コーディングでGenericsを使用するメリット、デメリット」で、Enhhanced for-loop のケースということで……。ネットで色々調べて、メリットとしては「Genericsを使いこなすと、Java言語プログラム・コードを大幅に簡略化できる」ということは分かりましたが、その他のメリットやデメリットなどがよく分かりません。(loopが始まると途中で止められない?というようなことが分かったような分からないような) どなたか、素人でも分かるように単純明快に解説して下さい or 解説しているサイトを教えて下さい! どうかよろしくお願いします!

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • deadlock
  • ベストアンサー率67% (59/87)
回答No.1

> loopが始まると途中で止められない? これがどこから来たのか分かりませんが、止まるときゃ止まります(^^; ・Generics この前提には「従来のJavaのCollectionフレームワークは型に対して安全ではない」というものがあります。 CollectionフレームワークはListやMapのことです。詳しい説明は省きます。 これらは全クラスの親クラスであるObjectを扱うの為に中に何が入っているかが保障しにくく、 クラスのキャストに関する問題(参考URL参照)が起きやすくなっています。 そこで、「このListにはStringだけ扱うよ」などと宣言できるようにしたものがGenericsです。 Genericsを使っただけのサンプルを見ると、コード量が増えているように感じますが、Genericsの利点は2つです。 1.おかしな値を入れようとすると、コンパイルの時点でエラーになる 2.取り出すときにキャストが不要 特に重要なのは1つ目で、明らかに動かないコードがコンパイルされるのを防ぐことができます。 この利点は参考サイトのサンプルよりも、Listを引数でもらう場合、 Listをメソッドの戻りとして受け取る場合等を想定してみると分かりやすいです。 instanceofを使って引数のListの中身を毎回チェックするより、 hoge(List<String > strList)と宣言する方が簡単で間違いがすぐ分かります。 → 本来記述しようとしている処理とは無関係なチェックコード、エラーハンドリングの削減 また、コンパイルでエラーになるので、変なものを渡していないか? というテストとその手戻りを削減できます。 → テスト、およびその手戻りにかかるコストの軽減 ・Enhhanced for-loop ループのときのお決まり処理を書かずにすみます。 コード量が減る+見やすくなる という直接の効果のほか、 Iteratorの変数名で悩まずにすむ などの効果が期待できます:-P あと、Genericsと「Enhhanced for-loopの場合」はあわせて説明しない方がいいと思います。 上記の説明にあるように、Genericsの利点はEnhhanced for-loopとはほぼ無関係なので混乱するでしょう。 もしあわせて説明するのであれば、Genericsによるコードの変更→Enhhanced for-loopによるコードの削減 というように、順を追って説明しましょう。順番は逆でもいいですが、両方適用した物をいきなり見せるのは避けた方がいいです。 私は、説明するときは「引数で受け取ったListをfor文で処理する」を使うことが多いです。

参考URL:
http://www.atmarkit.co.jp/fjava/javatips/114java019.html

関連するQ&A

  • 「loop:」って?

    javaを勉強しています。初心者です。あるコードを読んでいて loop:for(){ for(){} } という記述があったのですが、この「loop:」はどういう意味があるのでしょうか?普通のfor文とは変わるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのメリット、デメリット

    javaのことを改めて知るためにjavaのメリット、デメリットを調べているのですが、ほかの言語と比べるとどこでしょうか? Webにもいろいろありましたが、情報が交錯していて整理できないのでよろしくお願いいたします。

  • for loop の処理が途中でプログラムを終えてもつづいてしまうのをやめさせるには?

    お世話になります。 for a = 1 to 10000 ~~処理~~ now = Timy While Timy < now + 2 DoEvents Wend loop ~~ とコーディングしてるのですが 途中でプログラムを終わらしても コンピューターの方でプログラムが続いてるみたいなのですが終わらすにはどうすればよいでしょうか?

  • JavaとC どちらがいいのか

    今回、プログラムを始めようと思い、海外の人気言語ランキングを見たところ、1位がCで2位がJavaでした。 なので今回、回答者様が、触れてみたことがある言語で、おすすめな点を教えていただければ嬉しいです。 後、両方触れたことがあれば2つのメリット&デメリットも教えてくれれば嬉しいです ご回答よろしくお願いします

  • Java (ジャバ)

    Java とは、使っているパソコンの機種に依存しないプログラム言語のこと。 ネットで扱われているJavaは、大きく分けてJavaスクリプトとJavaアプレットの2種類。 script・・・手書き、筆記、台本、原稿 applet・・・別のアプリケーションを動かしているときに呼び出せる小さなアプリケーションプログラム なのだそうですがよくわかりません。 素人でもわかる説明となるとどうなるでしょうか? お願いします。

  • Javaのフレームワークについて

    Javaのフレームワークについての質問です。 現在、Webアプリケーションのショッピングサイトのようなサーバー側の規模がちょっと大きくなるものに関しては、スクリプト言語のPHPやRubyの代表的なフレームワークを使って作成しているのですが、Java用のWebアプリケーションのフレームワークもこれから使ってみたいと考えています。 それで、質問なのですが、 (1)現在、Java用のWebアプリケーション作成のフレームワークで世の中で皆さんが一番使われているものってどれになるのでしょうか?私が現在知っている限りでは、Struts、Struts2、JSF(Java Server Faces)、Seasar、Seasar2 くらいがあるのですが、使い分けのコツみたいなものがあれば教えていただきたいのです。(それぞれの、メリット、デメリットのようなもの。) (2)スクリプト言語のフレームワークとJavaのフレームワークの使い分けのようなものも分かれば教えてください。私の認識では、Java用のフレームワークを用いて設計しなければいけないものって、たとえば大手銀行の決済システムとか、かなり規模の大きなものを想定しています。プログラムの動作スピードを上げたい時とか、セキュリティー関係を厳重に行い時などを想定しています。Javaのフレームワークを使うメリットなども分かれば教えてください。 よろしくお願い致します。

  • WEBプログラムのそれぞれのメリット デメリット

    WEBプログラムを覚えたいのですが、 言語がいろいろあり どの言語を選んでいいかが わかりません 言語のメリット デメリットを教えて下さい お勧めの言語はどれでしょうか? 以下のどれの回答でもかまいません ・ASP ・ASP.NET ・PHP ・JAVA ・JSP ・サーブレット

  • JAVAで作るプログラムとは

    HPに使うJAVAスクリプトの勉強をしたく、JAVAとスクリプトは違う事を知らずにJAVAの通信教育を申し込んでしまいました。 JAVAはサーバー側のプログラミング言語で、 スクリプトはクライアント側のスクリプト言語でブラウザ上で動作する。 申し込んだものは仕方ないので頑張ってJAVAを理解したいと思うのですが、 ネット上のJAVA講座を見ると最初にJAVAをインストールするとあります。 これはJAVAを作成するソフトのようなものですか? JAVAで作るプログラムとはOSのようなものですか? JAVAでプログラムを作ってHPの更新やスクリプトが作成できるのですか? そもそもJAVAで作るプログラムとはどのように利用するのか、 プログラムの意味がよく分かりません。 JAVAとスクリプトの違いはもう良いのでプログラムについて 分かりやすく教えてください。

    • ベストアンサー
    • Java
  • Javaでクライアントアプリを作るメリット・ディメリット

    Windows上でアプリケーションを作る勉強をしようと思っています。 Javaにすべきでしょうか?C#にすべきでしょうか? 「Java言語はクライアントアプリ開発のメジャーになれるか?」 http://headlines.yahoo.co.jp/hl?a=20041009-00000003-zdn_ep-sci を読むと、Javaの未来もバラ色に見えます。 メリットとディメリットを教えて頂けないでしょうか?

    • ベストアンサー
    • Java
  • JAVAで大丈夫?

    学校でJAVAを習っていて、だいぶプログラムも組めるようになってきたのですが、最近ほかの質問などを見ていてJAVAだけで大丈夫なのかと思うようになってきました。学校の教授は「これからはJAVAだ。」と言っていますがやはりJAVAだけでなくC言語やC++もやったほうがよいのでしょうか? ちなみに将来はプログラマーになりたいと思っています。意見を聞かせてください。よろしくお願いします。

    • ベストアンサー
    • Java