Примечание: исключительно из любопытства, а не для какого-либо реального варианта использования.
Мне интересно, есть ли способ объявить объект Class
Class
с допустимыми параметрами типа:
Class cc1 = Class.class; //raw type
Class<Class> cc2 = Class.class; //now parameter is raw type
Class<Class<?>> cc3 = Class.class; //compile error: inconvertible types
Если Class
и Class<?>
взаимозаменяемы, то почему Class<Class>
и Class<Class<?>>
нет?
EDIT: вопрос можно обобщить до вопроса о вложенных параметрах необработанного типа. Например:
ArrayList<ArrayList<?>> lst = new ArrayList<ArrayList>(); //same compile error
EDIT2: я должен немного перефразировать вопрос: я знаю, что
Class<?> c = Class.class;
действителен, но мне интересно, почему Class<Class>
не совпадает с Class<Class<?>>