Java8について 2014/03/07.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
Apache Camel Data Format Component Apache Camel
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミング基礎I(再) 山元進.
Apache Camel Data Format Component Apache Camel
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
Javaのための暗黙的に型定義される構造体
第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」
アルゴリズムとデータ構造1 2007年6月12日
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとデータ構造 2011年6月13日
構造体.
条件式 (Conditional Expressions)
計算機プログラミングI 第12回 2003年1月23日(木) インターフェース スレッド 最後に お知らせ クイズ 授業アンケート
社会人学習講座 「Javaプログラミング概論」
JavaBeans とJSP データベース論 第5回.
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
RMI ソフトウェア特論 第6回 /
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Javaプログラムの変更を支援する 影響波及解析システム
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
アルゴリズムとデータ構造 2012年6月11日
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
統合開発環境のための プログラミング言語拡張 フレームワーク
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
フレンド関数とフレンド演算子.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング言語論 プログラミング言語論 演習5 解答と解説 演習5 解答と解説 1 1.
値渡しと参照渡しについて.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
デフォルト引数 長谷川啓.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

java8について 2014/03/07

java8の新機能 新しく導入される機能については、 以下のページに一覧が載っています。 http://openjdk.java.net/projects/jdk8/features 上記リンクの中で、以下の新機能について解説します。 • 126 Lambda Expressions & Virtual Extension Methods

java8からラムダ式が サポートされる ラムダ式とは? → 簡単に言うと匿名関数 (厳密には異なるらしい) 以下のような書き方になる。 (仮引数) (関数本体) (int x, int y) -> {return x + y;} → ラムダ式を使わなかった場合 public int calc(int x, int y) { return x + y; } → 関数はcalcという名前で定義される。

関数型インターフェース •実装すべきメソッドがひとつだけであるインターフェースを 関数型インターフェースという。 •関数型インターフェースにはラムダ式が適用できる。 // Runnableインターフェースはrunメソッドのみ定義 Runnable r = () -> { System.out.println("test"); }; Thread t = new Thread(r); •関数型インタフェースを明示的に表す場合、 @FunctionalInterfaceが使用できる → 関数型インターフェースの定義に従っていない場合、 コンパイル時にエラーが出る。(書き間違いの抑止効果)

型推論 (int x, int y) -> {return x + y;} ↓ 引数の型は推論できる場合、省略できる (x, y) -> {return x + y;} ↓ 引数が一つで型が推論できる場合は()も不要 x -> { /* 関数本体 */ } ↓ 関数本体がreturn文のみだった場合、rerurn, { ;}も省略できる x -> x + 5

メソッド参照 •「::」演算子を使用して、メソッドを関数オブジェクトとして 参照できる String::valueOf これは x -> String.valueOf(x) と一緒。

interfaceに仕様が増えた① •interfaceに実装を持てるようになった。 interface Test { // 実装するメソッドにキーワード「default」を付ける default void test(String s){ System.out.println(s); } •defalutメソッドはオーバーライドできる。

interfaceに仕様が増えた② •interfaceに実装を持てるようになったので、 多重継承が可能になった。 public class TestImpl implements Test1, Test2 { // Test1, Test2共に「test」というdefaultメソッドが // 定義されていた場合、コンパイルエラーとなる }

interfaceに仕様が増えた③ •defaultメソッドをオーバーライドすればコンパイル可能。 public class TestImpl implements Test1, Test2 { @Override public void test(String s) { System.out.println(s); } •どちらかのdefaultメソッドを呼び出すことも可能 Test2.super.test(s);

参考 •きしだのはてな http://d.hatena.ne.jp/nowokay/20130610 •徹底解説!Project Lambdaのすべて [JJUG CCC 2013 Fall H-2] from bitter_fox http://www.slideshare.net/bitter_fox/jjug-ccc-2013-faul