中途半端

に似ていると混乱の元だ。

前にも書いた記憶があるが、ジェネリックなメソッドの戻り値の型制約、C#では

//C# 
T Method() where T : MyClass { } 

だが、Javaではこう書く。

//Java 
 T method() { } 

同じ意味なんだけどな。

あと、Javaではジェネリクス型は内部的には通常の型と区別されていないため、

Object method(Object parameter) { }
 T method(Object parameter) { } 

この二つのメソッドはオーバロードとは認められずコンパイルが失敗する。
.NETに慣れてしまっているので、暫くはいらいらするだろうな。

追記:
というか、Javaジェネリクスははやはり「糖衣構文」でしか無いということだ。
型として独立していないので、コレクション以外ではあまり使えないと考えた方が良いだろう。