最新
Java 認定資格ガイド
日本オラクル株式会社
オラクルユニバーシティ
担当マネージャ
岡田 大輔
Java Day Tokyo 2015
2015
年
4
月
8
日
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
•
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこ
とはできません。以下の事項は、マテリアルやコード、機能を提供することを
コミットメント(確約)するものではないため、購買決定を行う際の判断材料
になさらないで下さい。オラクル製品に関して記載されている機能の開発、リ
リースおよび時期については、弊社の裁量により決定されます。
4
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
本日おはなしすること
今日までの Java 認定資格
これからの Java 認定資格
新試験受験のポイント
1
2
3
5
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
今日までの Java 認定資格
Java SE
7
資格の現状
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
7
Java認定資格は、Javaプログラミングスキルを証明する世界共通の認定資格です。
Java SE / EE 認定資格
Oracle Certified Expert , Java EE 6
Web Component Developer
Oracle Certified Expert, Java EE 6
Enterprise JavaBeans Developer
Oracle Certified Expert, Java EE 6
Java Persistence API Developer
Oracle Certified Expert, Java EE 6
Web Services Developer
設計者の意図を正しく理解して独力で機能実装が行えるレベル
(中上級Javaプログラマ向け)
※ Global資格名: Oracle Certified Professional, Java SE 7 Programmer
Oracle Certified Java Programmer,
Gold
SE 7
上級者の指導のもとで指定された実装が行えるレベル
(初級Javaプログラマ向け)
※ Global資格名: Oracle Certified Associate, Java SE 7 Programmer
Oracle Certified Java Programmer,
Silver
SE 7
Javaによるオブジェクト指向プログラミングを覚えたレベル
(言語を初めて学ぶプログラマ向け)
Oracle Certified Java Programmer,
Bronze
SE 7
Oracle Certified Expert,
Java EE 6 JaveServer
Faces Developer
レベル3
レベル2
レベル1
レベル0
ITSSレベル
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
8
Java SE 7 資格のレベル感
Oracle Certified
Java Programmer,
Gold
SE 7
Oracle Certified
Java Programmer,
Silver
SE 7
Oracle Certified
Java Programmer,
Bronze
SE 7
設計者の意図を正しく理解して独力で機能実装が行えるレベル
(中上級Javaプログラマ向け)
Gold資格は、コレクションAPI, ファイルI/O,
並行処理
、
JDBC
などのライブラリを使用したプログラミングを理
解しているかどうかが主な出題項目です。加えて
デザインパターン
についても問われるため
設計から実装ま
での包括的なスキルを身につけているか
が問われます。
(Global資格: Oracle Certified Professional, Java SE 7 Programmer)
上級者の指導のもとで実装コードやテストコードなどを書けるレベル
(初級Javaプログラマ向け)
Silver資格は、Java言語の基本文法とオブジェクト指向プログラミング(クラス、インタフェース、例外処理)を
理解しているかどうかが主な出題項目です。
プログラミングのために必要とされる仕様を詳細に理解してい
るか
が問われます。
(Global資格: Oracle Certified Associate, Java SE 7 Programmer)
Javaによるオブジェクト指向プログラミングを覚えたレベル
(言語を初めて学ぶプログラマ向け)
Bronze資格は、Java言語の基本文法(変数宣言や制御文)とオブジェクト指向プログラミングの基本を理解して
いるかどうかが主な出題項目です。
言語初学者が理解するべき基礎項目を理解しているか
が問われます。
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Oracle Certified
Java Programmer,
Silver SE 7
Oracle Certified
Java Programmer,
Bronze SE 7
1Z0-805: Upgrade to
Java SE 7 Programmer
1Z0-804:
Java SE 7 Programmer II
1Z0-803:
Java SE 7 Programmer I
1Z0-802:
Java SE 7 Bronze Exam
Oracle Certified
Java Programmer,
Gold SE 7
9
Java SE 7 資格認定パス
Bronze, Silver
どちらからでも
スタート可能
一試験で
移行可能
これから資格取得
を目指す方
OCJ-P / SJC-P
資格取得者
(バージョンは問わない)
資格名
試験名
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP Bronze / Silver SE 7 試験の出題傾向
•
ソースコードをもとに、その結果を問う問題が多く出題されます
–
ソースコードはそれほど長くありません (10-15行程度) が、出題数が多いので
短時間でコードの内容を把握できるかどうかがポイントです
•
1問あたり1分30秒
ペースで回答する必要があります
•
コンパイルエラーになるか?実行結果はどうなる?
•
要件に合致する実装を選ぶ問題も出題されます
•
Javaプログラミングの基礎をしっかり理解しておく必要があります
–
出題トピックはほとんど同じです
•
Silver 試験では例外処理も出題範囲です
•
Silver 試験のトピックはGold試験でも一部出題されます
Bronze と Silver の共通点
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP Bronze / Silver SE 7 試験の出題傾向
•
Bronze 試験の方が素直な問題が多いです
–
単一項目が理解できていれば解答可能な問題が多いです
–
Java SE 7 の新機能は出題しません
。
–
オブジェクト指向プログラミングに関する出題が多いです
•
Silver 試験は少し高度なトピックも出題されます
–
複数の要素を組み合わせた出題もあります
–
Java SE 7 の新機能も出題されます
。
–
各トピックはほぼ均等に出題されるので網羅的に準備しましょう。
Bronze と Silver で異なる点
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP Gold SE 7 試験の出題傾向
•
ソースコードをもとに、その結果を問う問題が多く出題されます
–
少し長めのソースコード (15-20 行程度) を読み込む必要があるが、出題数が多
いので短時間でコードの内容を把握できるかどうかがポイントです
•
1問あたり1分30秒
ペースで回答する必要があります
•
コンパイルエラーになるか?実行結果はどうなる?
•
要件に合致する実装を選ぶ問題も出題されます
–
デザインパターンはパターンと実装例をしっかり把握しておく必要があります
Gold 試験 (804) と移行試験 (805) との共通点
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP Gold SE 7 試験の出題傾向
•
Gold試験 (804) は従来のプログラマ試験の範囲がメインです
–
Java SE 7 の新機能ももちろん出題されますが、ファイル I/O やスレッドプログ
ラミングなど Java SE 6 までのプログラミングスキルを問う問題も多く出題さ
れます
•
特にスレッドプログラミングはコードが複雑です
•
アサーションや書式付き出力 (printf) なども要チェックです
•
移行試験 (805) は Java SE 7 の新機能にフォーカスしています
–
Project Coin や Fork/Join, NIO.2 など Java SE 7 の新機能を理解できているかを問
う問題が多く出題されます
•
各トピックはそれほど深い理解を問うものではありませんが、プログラミングの手順
などひと通り理解できているかどうかがポイントです
Gold 試験 (804) と移行試験 (805) で異なる点
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
みんなのギモン:「認定試験は時間的な
余裕がない!」
•
オラクル認定資格の試験仕様の策定には『心理統計学者
(Psychometrician)
』も関与しています!
–
認定試験は英語試験開始時にベータ試験を実施します
•
日本語でベータ試験を行うことはあまりありません (基本的に Bronze 試験のみ)
–
ベータ試験の受験結果に基づいて、合格ラインと試験時間が設定されます
•
試験時間については、受験者が「心理的プレッシャーを少し感じる」程度の時間になるよ
うに心理統計学者が助言を行います
14
そう感じるように試験時間を設定しています
時間が足りなく感じるのは当然のことなので
慌てず。落ち着いて。
解答しましょう
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
これからの Java 認定資格
Java SE
8
認定資格。はじまります
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java SE 8
対応
認定資格
2015年5月28日(木)
より日本語試験
順次開始
16
Oracle Certified
Java Programmer,
Bronze
SE 7/8
Oracle Certified
Java Programmer,
Silver
SE 8
Oracle Certified
Java Programmer,
Gold
SE 8
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Oracle Certified
Java Programmer,
Silver
SE 8
Oracle Certified
Java Programmer,
Gold
SE 8
Java SE 7 / 8 認定資格
17
あたらしい認定資格体系
設計者の意図を正しく理解して
独力で機能実装が行えるレベル
(中上級Javaプログラマ向け)
上級者の指導のもとで
指定された実装が行えるレベル
(初級Javaプログラマ向け)
Javaによる
オブジェクト指向プログラミングを覚えたレベル
(言語を初めて学ぶプログラマ向け)
Oracle Certified Java Programmer,
Bronze
SE 7/8
Oracle Certified
Java Programmer,
Silver
SE 7
Oracle Certified
Java Programmer,
Gold
SE 7
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
18
Java SE 8 資格のレベル感
Oracle Certified
Java Programmer,
Gold
SE 8
Oracle Certified
Java Programmer,
Silver
SE 8
Oracle Certified
Java Programmer,
Bronze
SE 7/8
設計者の意図を正しく理解して独力で機能実装が行えるレベル
(中上級Javaプログラマ向け)
Gold資格は、コレクションAPI, ファイルI/O, 並行処理、JDBCなどのコア・ライブラリを使用方法と Java SE 8 の
新機能である
Lambda 式や Stream API
を使用した関数スタイルのプログラミング方法を理解しているかどうか
が主な出題項目です。加えて
デザインパターン
についても問われるため
設計から実装までの包括的なスキル
を身につけているか
が問われます。
(Global資格: Oracle Certified Professional, Java SE 8 Programmer)
上級者の指導のもとで実装コードやテストコードなどを書けるレベル
(初級Javaプログラマ向け)
Silver資格は、Java言語の基本文法とオブジェクト指向プログラミング(クラス、インタフェース、例外処理)を
理解しているかどうかが主な出題項目です。また、基本的なLambda 式の書き方やDate and Time API の基礎を
含めた
プログラミングのために必要とされる仕様を詳細に理解しているか
が問われます。
(Global資格: Oracle Certified Associate, Java SE 8 Programmer)
Javaによるオブジェクト指向プログラミングを覚えたレベル
(言語を初めて学ぶプログラマ向け)
Bronze資格は、Java言語の基本文法(変数宣言や制御文)とオブジェクト指向プログラミングの基本を理解して
いるかどうかが主な出題項目です。
言語初学者が理解するべき基礎項目を理解しているか
が問われます。
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java SE 7 資格
Java SE 8 資格
Java SE 7 / 8 認定パス
19
OCJP
Gold SE 8
OCJP
Silver SE 8
OCJP
Gold SE 7
OCJP
Silver SE 7
SJC-P
(any version)
OCJP
Bronze SE 7/8
OCJ-P
SE 5/6
任意 必須Java SE 7 Programmer I
(1Z0-803)
Java SE 8 Programmer I
(1Z0-808)
Java SE 7 Programmer II
(1Z0-804)
Java SE 8 Programmer II
(1Z0-809)
Upgrade to Java SE 8 Programmer
(1Z0-810)
Java SE 7/8 Bronze
(1Z0-814)
Upgrade Java SE 5 and 6 to Java
SE 8 Programmer (1Z0-813)
Upgrade to Java SE 7 Programmer
(1Z0-805)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Oracle Certified
Java Programmer,
Silver
SE 8
Oracle Certified
Java Programmer,
Bronze
SE 7/8
1Z0-809:
Java SE 8 Programmer II
1Z0-808:
Java SE 8 Programmer I
1Z0-814:
Java SE 7/8 Bronze Exam
Oracle Certified
Java Programmer,
Gold
SE 8
20
Java SE 8 認定パス
(新規)
Bronze, Silver
どちらからでも
スタート可能
資格名
試験名
これから資格取得
を目指す方
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java SE 8 認定パス
(移行)
21
Oracle Certified
Java Programmer,
Gold
SE 8
1Z0-813: Upgrade Java SE 5 and 6
to Java SE 8 Programmer
1Z0-810: Upgrade to
Java SE 7 Programmer
1Z0-805: Upgrade to
Java SE 7 Programmer
SJC-P 保持者は
OCJP Gold SE 7 → OCJP Gold SE 8
の順でアップグレード
OCJ-P SE 5/6 または OCJP Gold SE 7
保持者は一試験で移行可能!
資格名
試験名
SJC-P 資格取得者
(バージョンは問わない)
OCJ-P SE 5 / 6
資格取得者
OCJP Gold SE 7
資格取得者
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-810: Upgrade to
Java SE 8 Programmer
1Z0-804:
Java SE 7 Programmer II
Oracle Certified
Java Programmer,
Gold
SE 8
22
Java SE 8 認定パス
(OCJP Silver SE 7 資格取得者)
1Z0-809:
Java SE 8 Programmer II
1Z0-808:
Java SE 8 Programmer I
資格名
試験名
Oracle Certified
Java Programmer,
Gold
SE 7
Oracle Certified
Java Programmer,
Silver
SE 8
OCJP Silver SE 7
資格取得者
OCJP Silver SE 7 資格取得者は、
OCJP Gold SE 7 → OCJP Gold SE 8
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-804:
Java SE 7 Programmer II
Oracle Certified
Java Programmer,
Gold
SE 8
23
Java SE 8 認定パス
(OCJP Bronze SE 7 資格取得者)
1Z0-809:
Java SE 8 Programmer II
資格名
試験名
Oracle Certified
Java Programmer,
Gold
SE 7
Oracle Certified
Java Programmer,
Silver
SE 8
OCJP Bronze SE 7
資格取得者
Oracle Certified
Java Programmer,
Silver
SE 7
1Z0-803:
Java SE 7 Programmer I
1Z0-808:
Java SE 8 Programmer I
Bronze 新試験 (1Z0-814) は
再受験不要なので Silver 試験に
チャレンジしましょう!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java SE 8 試験と資格
試験番号 試験名
認定資格
前提資格
試験開始時期
1Z0-814
Java SE 7/8 Bronze
Oracle Certified Programmer,
Bronze SE 7/8
なし
2015年 5月28日
1Z0-808
Java SE 8 Programmer I
Oracle Certified Programmer,
Silver SE 8
なし
2015年 7月上旬
1Z0-809
Java SE 8 Programmer II
Oracle Certified Programmer,
Gold SE 8
OCJP Silver SE 8
2015年 10月
(※)
1Z0-810
Upgrade to Java SE 8 Programmer
OCJP Gold SE 7
2015年 9月
(※)
1Z0-813
Upgrade Java SE 5 and 6 to Java SE 8
Programmer
OCJ-P SE 5 または
OCJ-P SE 6
2015年 10月
(※)
24
日本語試験は順次開始します
※ 英語試験のリリース状況によって日本語試験開始時期を変更する可能性があります
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
新試験受験のポイント
OCJP Bronze SE 7/8 資格試験と OCJP Silver SE 8 資格試験
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP
Bronze
SE 7/8 資格試験
•
試験名(試験番号): Java SE 7/8 Bronze (1Z0-814)
•
資格名: Oracle Certified Java Programmer,
Bronze
Java SE 7/8
•
出題数: 60 問
•
試験時間: 65 分
•
合格ライン: 60%
•
試験開始日: 2015 年 5 月 28 日 (木)
–
試験予約開始: 2015 年 5 月 21 日 (木) 〜
26
1Z0-814: Java SE 7/8 Bronze
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
新試験 1Z0-814: Java SE 7/8 Bronze の
真実
Java SE 7 Bronze
(1Z0-802)
と同ーの試験問題
27
バージョンに依存する内容は出題しません
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
よくある質問と回答
•
1Z0-802 と 1Z0-814 の違いはなんですか?
–
試験番号と試験名が異なるだけです。出題内容はもちろん、出題数や
試験時間、合格ラインなどの試験仕様も変更はありません。
–
試験対策本も 1Z0-802 用のものをそのまま使って大丈夫です。
•
『オラクル認定資格教科書 Javaプログラマ Bronze SE 7』 (翔泳社)
•
『オラクル認定資格教科書 Javaプログラマ Bronze SE7 スピードマスター問題集』(翔泳社)
•
『徹底攻略Java SE 7 Bronze問題集[1Z0-802]対応』(インプレスジャパン)
•
1Z0-802 の受験予約をしてしまいました。1Z0-814 に変更した方がい
いですか?
–
いいえ。1Z0-802 試験合格者も OCJP Bronze SE 7/8 資格者として認定されますの
で、そのまま 802 試験を受験しても大丈夫です。
28
OCJP Bronze SE 7/8
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
OCJP
Silver
SE 8 資格試験
•
試験名(試験番号): Java SE 8 Programmer (1Z0-808)
•
資格名: Oracle Certified Java Programmer,
Silver
Java SE 8
•
出題数: 77 問
•
試験時間: 120 分
•
合格ライン: 65 %
•
日本語試験開始予定: 2015 年 7 月上旬
29
1Z0-808: Java SE 8 Programmer
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-808: テスト内容チェックリスト (1)
1. Javaの基本
変数のスコープを定義する
Javaクラスの構造を定義する
main()メソッドがある実行可能なJavaアプリケーションを作成する
他のJavaパッケージをインポートしてコードでアクセスできるようにする
2. Javaのデータ型の操作
変数を宣言および初期化する
オブジェクト参照変数とプリミティブ変数を区別する
オブジェクトのフィールドに対して読取りと書込みを行う
オブジェクトのライフサイクルについて説明する
オブジェクトのメソッドを呼び出す
30
3. 演算子と決定構造の使用
Javaの演算子を使用する
カッコを使用して演算子の優先順位を変更する
==とequals()を使用して文字列と他のオブジェクトが等しいかどうかをテストす
る
ifおよびif/else構造を作成する
switch文を使用する
4. 配列の作成と使用
1次元配列を宣言、初期化、インスタンス化および使用する
多次元配列を宣言、初期化、インスタンス化および使用する
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-808: テスト内容チェックリスト (2)
5. ループ構造の使用
whileループを作成および使用する
拡張forループを含むforループを作成および使用する
do/whileループを作成および使用する
ループの構造を比較する
breakとcontinueを使用する
6. メソッドとカプセル化を操作する
引数と戻り値があるメソッドを作成する
staticキーワードをメソッドとフィールドに適用する
オーバーロードメソッドを作成する
デフォルトコンストラクタとユーザー定義のコンストラクタを区別する
コンストラクタを作成および多重定義する
アクセス修飾子を適用する
カプセル化の原則をクラスに適用する
値を変更するメソッドに渡した場合のオブジェクト参照とプリミティブ値に対す
る影響を判断する
31
7. 継承の操作
継承を実装する
ポリモフィズムの使用例を示すコードを開発する
参照の型とオブジェクトの型を区別する
キャストが必要なタイミングを判断する
superとthisを使用してオブジェクトとコンストラクタにアクセスする
抽象クラスとインタフェースを使用する
8. 例外の処理
チェックされる例外、RuntimeExceptionおよびエラーを区別する
try/catchブロックを作成し、通常のプログラム・フローが例外によってどのよう
に変更されるかを判断する
Javaで使用される例外について説明する
例外をスローするメソッドを呼び出す
一般的な例外クラスとカテゴリを認識する
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-808: テスト内容チェックリスト (3)
9. 基本的な Java API の使用
StringBuilderクラスおよびそのメソッドを使用してデータを操作する
文字列を作成および操作する
Date and Time API を使用した日付の操作 ( java.time.LocalDateTime,
java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter,
java.time.Period )
ArrayListを宣言および使用する
Predicate を使用する基本的な Lambda 式を記述する
32
新トピックは、「
9. 基本的な Java API の使用
」のみ
文字列操作と ArrayList は Java SE 7 試験でも出題されていた
ので、新規は Date and Time API と Lambda の基礎だけ。
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-808: Java SE 8 Programmer I を先取り
•
LocalDateクラスの使い方
–
オブジェクト生成のためのメソッドは次をチェック!
•
now(), of(int year, int month, int dayOfMonth), parse(charSquence text)
–
of メソッド引数が取りうる値の範囲?
month: 1-12 or 列挙型 Month, day: 1-28,29,30, 31
–
parse フォーマットは?
"YYYY-MM-DD"
–
日付の加減算するメソッド
•
加算:
plusDays(long days), plusMonths(long months), plusWeeks(long weeks), plusYears(long years)
•
減算:
minusDays(long days), minusMonths(long months), minusWeeks(long weeks), minusYears(long years)
•
DateTimeFormatterクラスの使い方
–
事前定義されたフォーマッタ
•
ISO_LOCAL_DATE ('2011-12-03'), ISO_LOCAL_DATE_TIME ('2011-12-03T10:15:30')
33
Date and Time API は何が聞かれる?
無効な値を指定した場合はどう
なるか?
も確認しましょう
次のコードは同じ結果?
LocalDate.now().plusMonths(
-2
);
LocalDate.now().minusMonths(
2
);
One Point:
和暦
(java.time.chrono.JapaneseDate)
の使い方も確認しておきましょう
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1Z0-808: Java SE 8 Programmer I を先取り
•
List のデフォルトメソッド:
–
replaceAll (UnaryOparator<E> operator)
–
removeIf (Predicate<? super E> filter)
*Collection インタフェースのデフォルトメソッド
•
UnaryOperator や Predicate は関数型インタフェース = Lambda 式 OK !
34
Lambda 式はどの程度問われる?
One Point:
デフォルトメソッド
インタフェースに記述できる実装を
持ったメソッドのこと。
・キーワード default を指定する
・実装クラスでオーバーライド可能
List<String> words = Arrays.asList("java", "day", "tokyo");
// Lambda 式(省略なし)
words.replaceAll((String t) -> {return t.toLowerCase();} );
// Lambda 式(省略あり)
words.replaceAll(
t ->
t.toLowerCase()
);
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
こんな問題に注意!
- その1
•
次のコードを正しく説明しているものはどれですか?
(例外クラスは適切に import されているものとします)
1.
6行目でコンパイルエラーが発生する
2.
4行目でコンパイルエラーが発生する
3.
1行目でコンパイルエラーが発生する
4.
コンパイルは正しく行われる
例外はスローできる?
1. public void process() throws IOException, SQLException {
2. try {
3. // 例外が発生する処理;
4. } catch (Exception e) {
5. // 例外処理
6. throw e;
7. }
8. }
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
出題者の意図
- その1
•
Java SE 7 以降では、コンパイラによる例外オブジェクトの再 throw
時の型チェックが改善されています
–
throws 節に指定されたクラスのスーパークラスも throw 可能
•
発生する例外の型を推論可能なので、複数の例外をまとめて処理できます
•
Java SE 6 では、問題文のコードは 6 行目でコンパイルエラー
です
–
コンパイラの型チェックは意外とかしこい!!
バージョンによる違いが理解できていますか?
1. public static void exec() throws IOException, SQLException {
2. try {
3. // 例外が発生する処理;
4. } catch (Exception e) {
5. // 例外処理
6. e = new Exception();
7. throw e;
8. }
9. }
catch した例外オブジェクトとは
別の例外オブジェクトを throw すると
コンパイルエラーになります!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
こんな問題に注意
- その2
37
Data and Time API を使った日付の加減算
•
次のコードの実行結果正しく説明しているものはどれですか?
1.
2015-04-08
2.
2015-06-10
3.
2015-05-10
4.
実行時例外が発生する
LocalDate date = LocalDate.parse("2015-04-08");
date.plusDays(2);
date.minusMonths(-2);
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
出題者の意図
- その2
•
LocalDate クラスの parse メソッドの引数
–
第二引数がない場合、DateFormatter.ISO_LOCAL_DATE (= "YYYY-MM-DD")
•
LocalDate クラスでの加減算
–
LocalDate クラスは「日付」の演算のみ (Day, Week, Month, Year)
•
時間のみを扱う場合は LocalTime クラス。日付と時間は LocalDateTime クラス
•
メソッド引数には負の値を指定しても OK
–
date.minusMonths(-2); // 評価結果は 2015-06-08
38
Date and Time API の日付は不変オブジェクト
“2015-4-8” だとフォーマットに
合致しないので実行時例外になります
One Point:
LocalDate クラスのオブジェクトは不変 (Immutable)
です。
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
こんな問題に注意!
- その3
39
Lambda 式に惑わされるな!
•
次のコードを確認してください。
このコードについて正しい説明はどれですか?
1.
246810 が出力される
2.
12345678910 が出力される
3.
実行時例外になる
4.
コンパイルに失敗する
List<Integer> even = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
even.removeIf(i -> i % 2 != 0);
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
出題者の意図
- その3
•
問題の Lambda 式には構文上の間違いはありません
•
この問題で注目すべきは Arrays.asList(1, 2, ..);
–
このメソッドは固定サイズのリストを返すので add / clear / remove メソッドを
呼び出すと実行時例外
(UnsupportedOperationException)
が発生します。
–
コードを正しく動作させるためには以下のように修正します。
40
問われているのは Lambda 式の知識ではない!?
List<Integer> even = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
even.removeIf(i -> i % 2 != 0);
System.out.println(even);
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |