文章目錄
- 模版
- 通配符

模版
通配符
- 實例
import java.util.ArrayList;
import java.util.List;class Message<T> {private T message ;public T getMessage() {return message;}public void setMessage(T message) {this.message = message;}
}
public class test {public static void main(String[] args) {Message<String> message = new Message<>() ;message.setMessage("比特就業課歡迎您");fun(message);Message<Integer> message1 = new Message<>();message1.setMessage(10);fun(message1);}// 并不知道Message<?> 傳的是什么類型,所以使用通配符,可以匹配傳入的類型public static void fun(Message<?> temp){System.out.println(temp.getMessage());// temp.setMessage(12);// 不可以設置通配符,因為不知道它的類型是什么}
}/*
public class test {public static void main(String[] args) {List<Integer> list = new ArrayList<>();List<String> list1 = new ArrayList<>();}
}
*/
- 通配符的上界和下界
上界:<?extends 類> 通配符上界
下界:<? super 類> 通配符下界
通配符上界實例:
不能使用setMessage(new Banana())
因為Banana()不一定是對應的那個子類對象實例
通配符下界:
實例:
可以使用setMessage(new Apple())
因為Apple可以進行向上轉型成Fruit或者是Food
getMessage()不可使用,使用時分不清是Fruit還是Food
所以要使用時要進行強轉