Java のジェネリックス

これまで Javaジェネリクスについて大きな誤まりをしていた。
例えばハッシュを作る際には


private Map hash;
と宣言し、

hash = new HashMap();
として使うということを理解していたのだが、そこまでだった・・・

public class Hoge {
private T t;
}

<?>
なども記述できることは知っていたけど、いまいちあいまいな理解でいた。

ここに分かりやすい解説があった。
http://d.hatena.ne.jp/Nagise/20101105/1288938415
型変数のスコープのところで


String string = sample.xxx("hello");
ここまで踏み込んだ説明がされていてよくわかった。
WEBだと使わなかったもんなぁ。
Android で<?> という記述を見て、どうゆうことだっけ・・・と。