package chapter15._7._1;
public class HasF {
public void f() {
System.out.println("HasF.f()");
}
}
package chapter15._7._1;
class Manipulator<T> {
private T obj;
public Manipulator(T x) {
this.obj = x;
}
public void manipulate() {
// obj.f(); Cannot resolve method f()
}
}
public class Manipulation {
public static void main(String[] args) {
HasF hf = new HasF();
Manipulator<HasF> manipulator = new Manipulator<HasF>(hf);
manipulator.manipulate();
}
}
package chapter15._7._1;
class Manipulator2<T extends HasF> {
private T obj;
public Manipulator2(T x) {
this.obj = x;
}
public void manipulate() {
obj.f();
}
}
public class Manipulation2 {
public static void main(String[] args) {
HasF hf = new HasF();
Manipulator2<HasF> manipulator2 = new Manipulator2<HasF>(hf);
manipulator2.manipulate();
}
}