Я впервые использую дженерики в Java и столкнулся с проблемой, которую мне не удалось решить: почему это компилируется:
public interface Aa{}
public interface Bb{}
public interface Cc{}
public static <GenericAB extends Aa & Bb>
void method(GenericAB myABobject1, GenericAB myABobject2){}
public static <GenericAB extends Aa & Bb, GenericCA extends Cc & Aa>
void method(GenericAB myAbobject, GenericCA myCAobject){}
Но это не так:
public interface Aa{}
public interface Bb{}
public interface Cc{}
public static <GenericAB extends Aa & Bb>
void method(GenericAB myABobject1, GenericAB myABobject2){}
public static <GenericAB extends Aa & Bb, GenericAC extends Aa & Cc>
void method(GenericAB myAbobject, GenericAC myACobject){}
И я получаю эту ошибку: оба метода имеют одинаковое удаление .
Извините, если это глупый вопрос, но я не понимаю, почемупорядок интерфейсов в объявлении параметра ограниченного типа кажется важным.На самом деле я не думаю, что именно порядок вызывает ошибку, но я не понимаю, что делает.
Я читаю эту документацию Oracle , там написано, что ядолжен поставить класс в качестве первого параметра, но Aa, Bb и Cc все интерфейсы.Извините за мой английский тоже.