Open5
Java勉強メモ
Collection<Object>
全てのCollectionのsuper typeではない
Collection<?>
全てのCollectionのsuper type (とみなせるというくらいかな)
取得した値は?(unknown)だがObjectは全ての型のSuper typeなので、Objectとして扱うことはできる
Object
全ての型のsuper type
?
unknown 全ての型のsuper typeではない
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?
Java言語の並行処理
synchronizedインスタンスメソッド
メソッド単位の排他に見えてオブジェクト単位の排他
thisをロックしている
Reflection
本質的にはプログラミング環境が型やメソッドをオブジェクトで表現できるという考え
JavaのThread
Syncronized
オブジェクトをロックする機能
Design concepts
- Safety
- Liveness
- Performance
- Reusability