かつのりの日記2

わんくまでは珍しいJavaを中心とした日記です

目次

Blog 利用状況

書庫

日記カテゴリ

いろいろリンク

拡張for文

JDK5の拡張for文についてですが、JDK1.4まではfor文はfor(初期化式;ループ条件式;反復式)でしたが、for(型 変数 : 変数)というようなループができるようになりました。例えばこんなコードです。

上記コードを実行すると、

と表示されます。配列だけではなくjava.util.Listのサブクラスも対応しています。

結果は同じく、

となります。この構文で対応しているのは配列型とjava.lang.Iterable型です。上記の例であげたjava.util.Listもjava.lang.Iterableを実装しています。逆に言うと、java.lang.Iterableを実装しているクラスのインスタンスは何でも拡張for文による列挙対象になります。

では、独自のクラスのjava.lang.Iterableを実装させて拡張for文の対象とさせてみましょう。

これを実行すると、同じく

となります。他にオートボクシングを流用すると、こんなコードもかけます。

Integer型を格納できるList型に対してintの値を追加していますが、オートボクシング機能によって、ラッパー型とプリミティブ型の相互変換が行われてInteger型として格納されます。拡張for文で取得するときには逆にInteger型からint型へ変換されて取得されます。

いろんなパターンを書きましたが、拡張for文の基本は配列とIterableが利用できるというところを抑えておくとよいと思います。

追記:C#のIEnumerableと同じ感じですね。

http://blogs.wankuma.com/rti/archive/2007/04/06/70413.aspx
http://blogs.wankuma.com/rti/archive/2007/04/09/70728.aspx

 

投稿日時 : 2007年4月7日 15:06

Feedback

# re: 拡張for文 2007/04/07 23:02 じゃんぬねっと

ついつい、foreach って書いちゃう人 > わたし

# TlcAwwAcOBAzqZ 2021/07/03 1:37 https://water-damage-restoration24.sitey.me

Sweet blog! I found it while surfing around on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I ave been trying for a while but I never seem to get there! Appreciate it

# eVGDGZdYPSpy 2021/07/03 4:36 https://www.blogger.com/profile/060647091882378654

Very informative article post. Really Great.

# re: ??for? 2021/08/08 18:15 quinine vs hydroxychloroquine

choloriquine https://chloroquineorigin.com/# what is hydroxychloroquine 200 mg

# re: ??for? 2021/08/08 20:41 dosage for hydroxychloroquine

chloroquine side effects https://chloroquineorigin.com/# hydroxychloroquine 200 mg high

タイトル
名前
Url
コメント