Рассмотрите это расширение HashMap (генерирует экземпляр класса V при вызове "get", если он равен нулю)
public class HashMapSafe<K, V> extends HashMap<K, V> implements Map<K, V>{
private Class<V> dataType;
public HashMapSafe(Class<V> clazz){
dataType = clazz;
}
@SuppressWarnings("unchecked")
@Override
public V get(Object key) {
if(!containsKey(key)){
try {
put((K)key, dataType.newInstance());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.get(key);
}
}
его использование выглядит примерно так
Map<String,Section> sections = new HashMapSafe<String,Section>(Section.class);
sections.get(sectionName); //always returns a Section instance, existing or new
Мне кажется излишним поставлять " Я не понимаю, что это значит, когда он определен с помощью аргумента универсального типа, например:
IEnumerable<int> test = method();
Это просто сводит меня с ума! Пожалуйста, избавьте меня от страданий и объясните, что это значит?