package p; import java.util.ArrayList; import java.util.List; class A { public List<String> getList() { List<String> list= new ArrayList<String>(); list.add("X"); return list; } } interface I { public List<String> getList(); } class C extends A implements I { // Inherits getList() from A and I, but does NOT induce a connection // between them by redeclaring the method. // // Ways to deal: // A) Always calculate RippleMethods (but only once per method!). // B) If CU of C is found & processed: // connect inherited methods from A with matching methods from I. // If it is not guaranteed that C will be processed: // need a subtype hierarchy on A and I ==> A) RippleMethods. // void use() { // List l= getList(); // } }