Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public interface OldInterface2 extends OldInterface {
void newMethod();
}
interface Intf, внешний класс class Cls implements Intf и наш метод void smth(Intf i). Мы хотим новую функциональность, создаем interface Intf2 extends Intf, теперь нам нужно или добавить новый метод void smth(Intf2 i), оставив старый, или изменить метод на void smth(Intf2 i) и создать адаптер class Intf1ToIntf2Adapter implements Intf2 {
private Intf1 intf1;
public Intf1ToIntf2Adapter(Intf1 intf1) { this.intf1 = intf1; }
public void oldMethod() { intf1.oldMethod(); }
public void newMethod() { /* some default impl */ }
}
теперь нам нужно или добавить новый метод void smth(Intf2 i)
или изменить метод на void smth(Intf2 i) и создать адаптер
interface Int1 имеет default-метод someMethod и interface Int2 имеет также default-метод someMethod, а interface Int3 extends Int1, Int2? Какую из реализаций default-метода поставит Int3?
JSR 335 или lambda-выражения в JAVA 8