Итак, я понимаютот следующее не делаетне работает, ноЗачем Безразлично»это работает?
interface Adapter {}
class Adaptulator {
void add(Class extl, Class<a> intl) {
addAdapterFactory(new AdapterFactory(extl, intl));
}
}
</a>
add()
метод дает мне ошибку компиляции "Невозможно указать какой-либо дополнительный связанный адаптер <E> когда первая граница является параметром типа (в Eclipse) или "Параметр типа не может сопровождаться другими границами " (в идее), выберите.
Ясно, что тыпросто не разрешено использовать параметр типаI
там, до&
и этос этим. (И прежде чем вы спросите, это нене работает, если вы переключаетесьпотому чтонет никакой гарантии, чтоI
ISN»т конкретный класс.) Но почему бы и нет? Я'просмотрела Анжелику Лангерс FAQ и можетне могу найти ответ.
Как правило, когда некоторые ограничения дженериков кажутся произвольными,потому что тымы создали ситуацию, когда система типов можетна самом деле обеспечить правильность. Но я нене вижу, какой случай сломает то, что яЯ пытаюсь сделать здесь. Я'Можно сказать, что это как-то связано с диспетчеризацией метода после стирания типа, нотолько одинadd()
метод, так оно и естьтам не таккакая-то двусмысленность ...
Может кто-нибудь продемонстрировать мне проблему?