如何使用泛型(三)-extends

如何使用泛型(三)-extends 如果要在泛型上面加上限定類別, 可以使用extends關鍵字
假設現在有兩個類別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;
    }
}