torutkのブログ

ソフトウェア・エンジニアのブログ

稚内北星大学サマースクール(2日目)

朝食

朝食は、バスで大学へ移動する途中、稚内市街のホテルに立ち寄って食べます。
8時半頃です。

講義

可変長引数

いろいろ注意点あり。

  • 実際には配列型として扱われる。String... は、String[]と同じ
  • オーバーロードされたメソッドも含め、具体的な型にマッチする。Object... よりString...
型の自動変換
  • ラッパー型とプリミティブ型の==演算
 Integer integer = 1000;
 if (integer == 1000) {
    // true
 }

左辺のintegerがプリミティブ型のintにunboxingされて比較される

ジェネリック
public class Box<Τ extends Number> { ... }

クラス定義内で使用するTは、具体的なNumberのサブクラスになる。
例) Boxとして使用した場合、
T getWidth() -> Integer getWidth()


列挙型
  • 従来のJavaでもタイプセーフEnumは可能。しかし、定義が面倒で、しかも似たような実装になる。
  • キーワードenumは古いソースコードで良く使われている名前なので、古いソースをJ2SE 5.0でコンパイルするときに問題となるかもしれない。
  • printすると名前が表示される
  • switch-caseに使える
アノテーション

アノテーションを付けれるもの

パッケージ、クラス、インタフェース、列挙型、コンストラクタ、
メソッド、パラメーダ(値にも型<ジェネリックス>にも)、
フィールド(enum定数含む)、ローカル変数、Annotation型

アノテーションに付加できるデータ

@Author("Ueda")
@Author({ "Ueda", "Maruyama"})

java.lang.annotationにある4つの型

  • Documented
  • Inherited
  • ★Retention
  • ★Target

は、アノテーションにくっつくアノテーション(メタ・アノテーション)
★は重要なアノテーション

昼食

ラーメンと半ライス。ラーメンは味噌か野菜かの選択。ここは味噌を選択しました。

夕食

仕出しっぽいお弁当風定食。

夕食後の実習

ネットワーク管理コースで、LANケーブルの作成実習をやっていたのにまぎれて参加、ケーブルを1本作成。家から持ってきた携帯用のLANケーブルがVAIOと相性が悪く(ThinkPadでは問題なし)、困っていたところなので丁度良かった。
LANケーブル作りに終われ、アノテーションの実習が全然進まなかった。