Ладно, я думаю, что полностью не понял суть.
Я бы, вероятно, использовал композицию, а не наследование, делегируя внутреннему HashSet<T>
, но в add
вы бы хотели проверить:
if (o.getClass() != clazz)
{
// throw or reject
}
Обратите внимание, что это означает, что вам понадобится реальный класс во время выполнения, поэтому вам нужно будет создать набор с чем-то вроде:
ExactTypeSet<String> x = new ExactTypeSet<String>(String.class);