Конструкция
Class c = Set<Object>.class;
не компилируется в Java, а
Class c = Set.class;
хорошо компилируется.
Почему?
Это потому, что часть <Object> "стерта" из типа в Java (то есть класс Set<String> и Set<Object> точно такой же)
<Object>
Set<String>
Set<Object>