interface I1 { ... }
interface I2 { ... }
interface I3 { ... }
interface I4 { ... }
interface MyFactory {
Object<? extends I1 & I2 & I3> createI1I2I3(); // doesn't work
Object<? extends I2 & I3 & I4> createI2I3I4(); // doesn't work
}
Есть ли хитрость, чтобы сделать это?Я думал о таких вещах, как
interface I1I2I3 extends I1, I2, I3 { ... }
Но I1I2I3
! = <? extends I1 & I2 & I3>
.Есть причина, по которой я просто не могу использовать этот подход - I1
, I2
и I3
являются сторонним кодом.
Обновление
Для тех, кому интереснозачем кому-то может понадобиться такая странная вещь:
interface Clickable {}
interface Moveable {}
interface ThatHasText {}
interface Factory {
Object<? extends Clickable> createButton(); // just a button with no text on it
Object<? extends Clickable & ThatHasText> createButtonWithText();
Object<? extends Moveable & ThatHasText> createAnnoyingBanner();
}