public class MyGeneric<T, E> {}
public class Extend1<T, E> extends MyGeneric<T, E> {}
public class Extend2 extends MyGeneric<String, Object> {}
Насколько мне известно, оба подкласса в приведенном выше примере действительны. Мне было интересно, как Java знает, когда типы, заданные в суперклассе, будут определены при создании экземпляра подкласса и когда они являются фактическими именами классов (т.е. Как он знает, что T, E не являются именами классов)?
Замечание, допустимо ли (даже необычно) использовать более одной буквы для общих типов? Что делать, если (через некоторую отрывочную ошибку планирования) Типы конфликтуют с существующим классом, например.
public class E{}
public class Foo<E>{}
что происходит потом?
Изменить: Спасибо, что ответили так быстро. Чтобы ответить на мой первый вопрос, Ответ Joachim является наиболее эффективным.
Чтобы ответить на боковую точку, ответ на aioobe более ясный