/** * Created by mcarvalho on 15-06-2015. */ interface Subscriber<T> { void onComplete(T elem); void onException(Exception elem); } class PureService<T>{ public void addSubscriber(Subscriber<T> s) { } public void start(){ } } class Program<T> { void main(){ PureService<T> serv1 = new PureService<T>(); serv1.addSubscriber(new Subscriber<T>() { public void onComplete(T elem) { System.out.println("Succeeded with " + elem); } public void onException(Exception elem) { System.out.println("bhaaaa"); } }); serv1.start(); ServiceWrapper<T> serv = new ServiceWrapper<>(new PureService<>()); serv.addSubscriber( elem -> System.out.println("Succeeded with " + elem), excep -> System.out.println("bhaaaa") ); serv .onComplete(elem -> System.out.println("Succeeded with " + elem)) .onException(excep -> System.out.println("bhaaaa")); serv.start(); } }