以下のコードは、ジェネリックを特定のものにキャストするために Java プログラムに使用するものです。C# にはワイルドカードがないことは理解していますが、コードを Java に似たものに変更する方法として、誰かが正しい方向に向けてくれることを期待していました。
public <T extends GameComponent<?>>T getComponent(int id, Class<T> type){
return type.cast(components.get(id));
}