1章
-
compare
メソッドを持つ関数型インターフェース- o1がo2より小さい場合は負の整数を返す。
- o1がo2と等しい場合はゼロを返す。
- o1がo2より大きい場合は正の整数を返す。
Comparator<String> comparator = new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
};
- List.sort()、Stream.sortedの引数で使用されている。
匿名クラスには名前がないため、コンストラクタは定義できない
staticメソッドは、インスタンスがなくても動作するのでオーバーライドできない
staticではないインナークラスには、
staticなフィールドやメソッドを定義できない
ローカルクラスから参照するローカル変数は、
実質的finalでなければいけない
→そうではない場合はコンパイルエラー
2章
3章
newFixedThreadPool
あらかじめいくつかのスレッドを作って
プールしておき、時間の経過で不要な
スレッドを削除する
4章
- Optional.get は値が入っていることを前提としている
→ 値が空の場合はjava.util.NoSuchElementExceptionがスローされる - Iterable.foreachの引数はConsumer型
List<String> list = new ArrayList<String>();
list.add("D");
list.add("C");
list.add("F");
list.forEach((str) -> System.out.println(str));
-
プリミティブ型配列から Streamを作る場合は
プリミティブ型のStream(IntStreamなど)を使用する -
ラッパー型のリストからparallelStreamを作る場合は
戻り値はStream<ラッパー型>になる -
終端操作を2つ以上実行した場合
実行時にIllegalStateExceptionがスローされる -
Stream.reduce()
引数が1個の場合は戻り値Optional
引数が2個の場合は戻り値 第一引数(初期値)の型
5章
- File.listFiles: ディレクトリ内のファイル・ディレクトリの一覧を
Fileクラスで取得する - File.list: ディレクトリ内のファイル・ディレクトリの一覧を
文字列の配列で取得する
文字ストリーム | バイトストリーム | |
---|---|---|
入力 | java.io.Reader | java.io.InputStream |
出力 | java.io.Writer | java.io.Output Stream |
- BufferdReader、BufferdInputStreamはReaderより効率的に読み込める
- デシリアライズ: read Object
シリアライズ: writeObject - Pathオブジェクトの取得
- Paths.get("C://hoge/")
- new File("C://hoge/").toPath()
6章
-
java.sql.Connectionの参照を取得するには、
java.sql.DriverManagerのgetConnectionを使用する。 -
PreparedStatementのsetXXXの引数に
0を渡した場合は、実行時にSQLExceptionがスローされる -
Prepared StatementのsetXXXの引数に
値を指定してない場合も、実行時にSQLExceptionがスローされる -
PreparedStatement.executeUpdate
- データの挿入・更新・削除で使用する
-
ストアドプロシージャの呼び出し
- Connection.prepare Call("call プロシージャ名")
7章
- 上限境界ワイルドカードをつかってジェネリクスを宣言して
変数を作成しても、nullリテラルしか代入できない - 戻り値を戻すことが目的の場合はentends
- 引数を受け取って利用することが目的の場合はsuper
→ PECS
8章
9章
10章
- Locale.Builder はstaticインナークラスなので
new Locale.Builder() のように宣言できる
- Properties.get(): 引数がObject型
Properties.getProperty(): 引数が String型
- Properties.list(): プロパティファイルの中身を一覧表示
- ResourceBundleは抽象クラスなので
newでインスタンスを生成できない
11章
12章
整数オーバーフロー攻撃への対策
- 事前条件テスト
- アップキャスト
- BigIntegerクラスを使う
不変オブジェクトは
コンストラクタのアクセス修飾子をなし、
もしくはprivateにして外部パッケージからインスタンス化させないようにする
→ インスタンスを作成する場合はビルダーを提供する
シリアライズプロキシパターン
シリアライズ : writeReplace
デシリアライズ : readResolve
総仕上げ問題
- ラッパークラス同士でボクシング、アンボクシングはできない
- インタフェースには
インスタンスフィールドを定義できないが、
抽象クラスには定義できる