7. ランタイムがフルサポート
Javaではできることができない例: ワイルドカード
class A<T> { }
class B
{
void M()
{
A<string> a1 = new A<string>();
A<Exception> a2 = new A<Exception>();
List<object> list = new List<object>();
list.Add(a1);
list.Add(a2);
}
}
Javaなら
A<?>と書ける
8. ランタイムがフルサポート
誤解の例:「Javaは型消去だからこれが不可能」
class Utility
{
public static T Create<T>(Dictionary<string, object> map)
where T : new()
{
T obj = new T();
Type objType = typeof(T);
foreach(PropertyInfo prop in objType.GetProperties())
{
Type propType = prop.PropertyType;
// propTypeをインスタンス化してobjのプロパティに設定
}
return obj;
}
}