6. コンパイルに時間かかりすぎ class C<T> { C() {} C(T t) {} C(C<T> c) {} static <U> C<U> m(C<U> c) {return c;} public static void main(String... args) { C<String> c = m(new C<>(m(new C<>(m(new C<>())))); // 1秒以下 } }
この両者は、似ているようでいて、基本的には別モノです。表にしてみます。 Groovyのクロージャ java8のlambda式 導入時期 2003年 2014年03月 ローカル変数へのアクセス 読み書き可能 実質的にfinal(変数そのものに対しては読み込みのみ) 実装方法 Closure型のインスタンス MethodHandle, invokeDynamic.. 型推論の根拠 Closure<T>のTで返り値、@ClosureParamsで引数 FunctionalInterface(SAM型) 記法 { 引数 -> 本体 } { 本体 } {-> 本体 } (引数) -> { 本体 } (引数) -> 式 () -> { 本体 } 暗黙の動的なthis delegateにより実現 - 性能 ローカル変数をenclosingするため間接参照にするためのオーバーヘッドあり 性能上のオーバーヘ
札幌は大荒れ、の予想だったのですが、今のところ大変穏やかな天候です。こんにちは。こむろです。 この記事はJava Advent Calendar 2014の17日目になります。 昨日16日は@zephiransasさんの「Lambda-behaveでテストを書こう」でした。 Java8の素晴らしき世界 Java8を使ってプログラミングしていると、新しい機能を色々と使うことで簡潔で読みやすいコードを記述することが出来ます。これが思いの外楽しくるんるん気分でコードを書くことが出来ます。今までのように型をいちいち書かなきゃとかネスト地獄みたいなところを、少しだけ、でも大胆に改善することが出来、久々にJavaでコードを書いていて楽しいと思った時間でした。AndroidはJavaではn(ry 特にここ数ヶ月、Play for JavaでJava8を利用した開発をしていたのですが、その中でStream
先日、弊社ではプロジェクト事例の知見の交換や社内の技術者交流を目的として、社内向けの技術イベントを開催した。 私はこの4月から Amazon Echo の調査、Cognitive Services の LUIS を使用したチャットボットの作成など、機械学習や自然言語処理サービスを仕事で扱ってきたため、そこで得た知識を整理することを目的とした発表を行った。 ただ自然言語処理サービスの内容をまとめるだけでは面白くないので、Raspberry Pi を使って次のような特徴を持った音声デバイスの自作にも挑戦した。 日本語による命令を受けつける Raspberry Pi 経由でインターネットに接続できない家電を操作する(※) ※ Amazon Echo はライトのオン/オフなどを音声で制御する機能を備えているが、そのためには家電がインターネットに接続できる必要がある。 発表資料は以下の通りだ。 自然
概要 Stream系クラス Stream系メソッド Stream生成 [/2018-10-01] メソッド Stream [/2021-03-21] BaseStream プリミティブStream [/2021-03-21] onClose [2015-12-13] Streamの例 [/2021-03-21] 概要 JDK1.8で導入されたStreamは、複数の値(オブジェクト)に対して何らかの処理(変換や集計)を行う事を分かりやすく記述できる。 import java.util.stream.Stream; Streamの値の持ち方はjava.util.Listのようなイメージ。 しかしStreamの操作は一度しか行えないので(ScalaのTraversableOnce相当)、java.util.Iteratorの方が近いかも。 つまり複数の値を保持し、順次処理していく。 なお、Str
Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8. JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and other co
CodeIQ「ウチに来ない?」で掲載中の「Java8でgrepを作ろう」出題者のウルシステムズ前多氏。実は「ウチに来ない?」に挑戦し、コードでスカウトされたエンジニアだ。 前多氏にはJavaのニューバージョン「Java8」問題の見どころとともに、コード転職の舞台裏も語ってもらった。 by 馬場美由紀 (CodeIQ中の人) 「Java8でgrepを作ろう」出題の意図とは? 「Java8でgrepを作ろう」──CodeIQ「ウチに来ない?」のコーナーに出題されている問題だ。Java8は、今年3月にリリースされたばかりのJavaのニューバージョン。「待ちに待ってたよ」という声も、「え、知らなかった。何が変わったの?」という声も、業界内にはさまざまな感想が飛び交う。JavaはSIの現場でなくてはならない言語ではあるが、今回のバージョンアップには多少の今さら感もぬぐえない。リリースが遅れに遅れたこ
Java8 ではラムダ式やストリーム API に注目が集まってますが、何気にアノテーションに関しても機能拡張がされているようなので簡単な変更点や使い方を今夜試してみました。 ElementType の追加 TYPE_PARAMETER TYPE_USE 定義済みアノテーション @Repeatable アノテーション @FunctionalInterface アノテーション @Native アノテーション 目次 ラムダ式やストリーム API や新しい日時 API だけじゃない! Java8 のタイプ・アノテーションあの手この手 どんとこいタイプ・アノテーション! Checker Framework 導入あの手この手 ~without IDE 編~ どんとこいタイプ・アノテーション! IntelliJ IDE 独自のタイプ・アノテーション 参考 InfoQ 「Type Annotations
こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日本語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、
個人の日記レベルですんません、現象のみ。 書いてるコードに関しては型指定してあげれば解決したのだけど、再現させるのに苦労した。 まず、インタフェースを2つ用意。 interface A{} interface B{} それから、その両方を実装したクラスをふたつ用意 static class C implements A,B{} static class D implements A,B{} 片方だけ実装したクラスもふたつ用意 static class E implements A{} static class F implements A{} そんで、同じ型を継承してGでくるんだものを複数とって、共通の基底クラスをGでくるんだものとして返すメソッドを定義。 ※この文章では、実装したインタフェースも基底クラスと表現します。 static <T> G<T> o(G<? extends T>..
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く