1. 程式人生 > >泛型 的通配符類型 extends super

泛型 的通配符類型 extends super

gpo 安全 ret void set nag error employee air

package generic;

public class PairG<T> {

    T first;
    T second;
    public T getFirst() {
        return first;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public T getSecond() {
        return second;
    }
    public void setSecond(T second) {
        
this.second = second; } public static void main(String[] args) { getPrintBuddy(new PairG<Employee>()); // getPrintBuddy(new PairG<Manager>());//error getPrintBuddyE(new PairG<Employee>()); getPrintBuddyE(new PairG<Manager>()); getPrintBuddyS(
new PairG<Employee>()); getPrintBuddyS(new PairG<Manager>()); } //不能將參數類型傳到靜態方法 // public static T void method(T t){}//error //不能將 PairG<Manager> m 傳遞給這個方法 public static void getPrintBuddy(PairG<Employee> p){ Employee p1 = p.getFirst(); p.setFirst(
new Employee()); } public static void getPrintBuddyE(PairG<? extends Employee> p){ //安全的訪問器 Employee p1 = p.getFirst(); //編譯器只知道Employee的類型,不知道具體的類型,所以拒絕傳遞任何特定的類型 // p.setFirst(new Employee()); //error } public static void getPrintBuddyS(PairG<? super Manager> p){ // Manager p1 = p.getFirst(); //error //安全的設置器 p.setFirst(new Manager()); } }

泛型 的通配符類型 extends super