###前提・実現したいこと
以下のコードのコンパイルが通ってしまう理由がよく分かりません。
stream#foreachの定義は、
forEach(Consumer<? super T> action)
です。
一方でラムダ式で使用しているsubmitの定義は以下の通りFuture<?>型の戻り値を持ちます。
Future<?> submit(Runnable task)
Consumer#acceptは、
void accept(T t)なのでsubmitのような戻り値を持つメソッドを使用できないと思っていたのですがなぜかコンパイルが通ってしまいます。
なぜなのか理由をご教示いただけないでしょうか。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
package practice; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.DoubleStream; public class Pall { public static void main(String[] args) { ExecutorService service = Executors.newScheduledThreadPool(5); //★ DoubleStream.of(10.9, 2.3).forEach(s->service.submit( () -> System.out.print(s + " "))); } }
実行結果
2.3 10.9
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー