假設現在有兩個類別A跟B
class A{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class B{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
有一個類別是吃繼承A的類別class Obj<T extends A>{
private T t;
public T getData() {
return t;
}
public void setData(T t) {
this.t = t;
}
}
那麼你就會發現A a = new A();
a.setName("a");
B b = new B();
b.setName("b");
Obj<A> o1 = new Obj<>();
o1.setData(a);
System.out.println(o1.getData().getName());
Obj<B> o2 = new Obj<>();//編譯不過
o2.setData(b);
System.out.println(o2.getData().getName());
o2在宣告的時候會編譯不過, 原因出在B並不是A的子類別, 所以只要將B類別繼承A類別,
就可以通過編譯了。
class B extends A{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}