🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2668閲覧

enumのstream

naonao11

総合スコア97

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/12/30 08:14

java 8なのですが
Enumの値を取得し、streamで回す際にArrays.asListに変換をかけているのですが
これは一体何故なのでしょうか。
Enum.values()でArrayを取得した際そのまま回すことは何故できないのでしょうか。

ご助力よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/12/30 08:21

質問の意味が不明です 該当のコードを提示しましょう
退会済みユーザー

退会済みユーザー

2019/12/30 10:16

仕様
guest

回答2

0

Enum.values()でArrayを取得した際そのまま回すことは何故できないのでしょうか。

配列はメソッドを持てないからだと思います。(配列はコレクションでないからの理由として)

  • コレクションの場合は、インターフェイスCollectionのdefaultメソッドとしてstream()が実装されている。

defaultメソッドを持てるよう仕様変更した。そうすれば一箇所だけの変更で済むから

  • 配列はメソッドを持てないのでstream()メソッドを直接追加できない。

代わりにArraysにヘルパー機能を持たせている

Arraysのヘルパー機能を使ってStreamを取得することはできます。

Java

1enum TrafficLight {RED,YELLOW,GREEN}; 2 3Stream<TrafficLight> ... = Arrays.stream(TrafficLight.values()); 4Stream<TrafficLight> ... = Stream.of(TrafficLight.values()); // 内部でArrays.streamを呼んいでいる。

Arrays#stream()は引数のプリミティブ型配列に制約があります。Stream#of()には制約がありません。

投稿2019/12/30 11:32

xebme

総合スコア1090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

配列はコレクションではないからstreamを直接使えないのが理由ではないでしょうか?
配列をstreamとして使用する場合は、一旦コレクションであるListにしてstream()を使うか、Arrays.stream(配列);
とする必要があると思いますよ。

https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/Stream.html

投稿2019/12/30 08:28

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問