スッキリわかるJava入門実践編 - 2日目

第5章 さまざまな種類のクラス

  • ArrayList の Eはなんでもよい
    • ElementのEか
  • キャストは可能な限り利用を避けるべき
  • 仮型引数宣言することにより利用できる実型引数を制限する
public class Pocke<E> extends Character
  • static import 宣言することにより列挙子の型名を省略できる
    • 列挙子以外にもstatic クラスメンバについて記述を省略できる
  • インナークラスはGUI関数やJava資格試験対策など特別な理由がなければスルーOK
    • ということは、一般的には使うもんじゃないよ、ということか
  • static無しメンバクラスのインスタンス
Outer o = new Outer();
Outer.Inner = o.new Inner();

第6章 ラムダ式と関数オブジェクト

  • 第一級オブジェクト
    • プログラムの実行中に生み出したり、変数に代入したりできるもの
    • データ、データ構造、インスタンス
    • Java8では関数が加わる
  • I・P・O構造
    • Input、Process、Output
  • SAMインターフェイス
    • Single - Abstract - Method interface
    • java.util.functionパッケージのAPIとしていくつか用意されている
  • ラムダ式の省略記法
    • 代入時はラムダ式の引数宣言における型を省略可能
    • ラムダ式の引数が1つの場合は丸カッコを省略可能
    • ラムダ式が単一のreturn文の場合、波カッコとreturnを省略可能
  • Java8からjava.util.Collectionを実装している全てのクラスはstreamメソッドを持つ
  • parallelStream()で並列処理による高速化

第7章 JVM制御とリフレクション

  • System.getProperty("プロパティ名")
  • リフレクションの活用ポイント
    • テストや解析のためprivateメンバを操作した場合
    • メンバ名を用いた特殊な処理を作り込みたい場合
    • 利用するクラスを動的に追加・変更できるようにしたい場合

第8章 非標準ライブラリの活用

第9章 ファイルの操作

  • 文字列の読み書きはFileReader、FileWriter
  • バイト列の読み書きはFileInputStream、FileOutputStream
  • フィルタ
    • 暗号化のため
    • バッファリングのため
      • ファイル操作はバッファリングする
      • 処理性能の向上
      • まとまった単位でデータを読める
  • ファイルシステムの操作は不便だったのJava7からjava.nioパッケージが使える

第10章 さまざまなファイル形式

  • CSVを操作するにはStringTokenizerではなく、opencsv、OrangeSignal CSVを使う
  • プロパティファイルにはjava.util.Propertiesクラスを使う
  • XMLを扱うにはJAXP APIを使うが、それを使うためにはjavax.xml.parsers、org.w3c.domパッケージを使う必要がある
  • Serialize
    • Serializableを実装してないクラス型のフィールドは直列化の対象にならない
    • staticがついたフィールドは直列化の対象にならな
    • transientキーワードで修飾されたフィールドは直列化の対象にならない

今日の感想

今のところ非常に分かりやすい。
この書籍でまさしく入門して、詳しい記述などは他の書籍で、というのが良い気がする。