Open5

Java勉強メモ

hayaohayao

Collection<Object>

全てのCollectionのsuper typeではない

Collection<?>

全てのCollectionのsuper type (とみなせるというくらいかな)
取得した値は?(unknown)だがObjectは全ての型のSuper typeなので、Objectとして扱うことはできる

Object

全ての型のsuper type

?

unknown 全ての型のsuper typeではない

hayaohayao

Wildcard capture

よく分かっていないがすべてのTが?に対応しているなら以下のような処理を認めるということ?

Set<?> unknownSet = new HashSet<String>();

class Collections {
    //...
    <T> public static Set<T> unmodifiableSet(Set<T> set) {
        //...
    }
}
//...
Set<?> s = Collections.unmodifiableSet(unknownSet); // This works! Why?

hayaohayao

Java言語の並行処理

synchronizedインスタンスメソッド

メソッド単位の排他に見えてオブジェクト単位の排他
thisをロックしている

hayaohayao

Reflection

本質的にはプログラミング環境が型やメソッドをオブジェクトで表現できるという考え

hayaohayao

JavaのThread

Syncronized オブジェクトをロックする機能

Design concepts

  • Safety
  • Liveness
  • Performance
  • Reusability